PDA

View Full Version : چند سوال در مورد سي شارپ



alasht
سه شنبه 08 تیر 1389, 11:18 صبح
سلام
من چند تا سوال كلي دارم كه هر چي سرچ كردم پيدا نشد
سوالم از اينجا شروع ميشه كه من بعد از كلي دردسر و كمك دوستان تونستم ظاهر فرمم رو تغيير بدم و شكلشو كلا عوض كنم به اين صورت كه خاصيت FormBorderStyle رو None گذاشتم و براي فرمم بكگراند گذاشتم و با يكسري تنظيمات اضافه براي زيبايي بيشتر
حالا اين مشكلات براي فرمم هست :

1. فرمم وقتي اجراش ميكنم نميتونم با موس جا به جاش كنم يعني خاصيت درگ كردنشو از دست داده چيكار كنم كه اگه كسي برنامه رو اجرا كرد بتونه فرم رو درگ كنه و جابه جاش كنه ؟

2. آيا اين بكگراندي كه براي فرمم گذاشتم تو سيستم ديگه اگه اجرا بشه ايا اون عكس رو نشون ميده ؟ چون من هر چي تو پوشه برنامه گشتم اون عكس جايي ذخيره نشده بود يعني ادرس رو از درايوي كه توش عكسه ميخونه ؟ چيكار كنم كه تو سيستم ديگه عكس رو نشون بده ؟

3. چيكار كنم كه فرمم در حالت پيشفرض وسط صفحه اجرا بشه الان براي من گوشه صفحه اجرا ميشه كه خيلي ضايست ؟

بعد يه سوال ديگه سوا از فرم دارم اونم اينه كه چطور ميتونم براي textbox كدي بنويسم كه وقتي روش كليك كردي يا موس رو بردي روش رنگش تغيير كنه رنگ border و خود تكست باكس و وقتي از تكست باكس موس رو اوردي بيرون يا جاي ديگه كليك كردي رنگش به حالت اول برگرده ؟ من با html يكي ساختم براي اينكه متوجه منظورم بشين فايل ضميمه شده رو دانلود كنيد تا بهتر متوجه منظورم بشيد
با تشكر فراوان

میلاد قاضی پور
سه شنبه 08 تیر 1389, 11:30 صبح
1- وقتی فرم بوردر استایل روی نون باشه فرم قابل جابجایی نمیشه مگر اینکه توابع ای پی آی بلد باشید .
2- شما تصویر مورد نظرتون رو به پوشه ریسورس که موقع اد کردن ایمیج، در بخش سولوشن>پروپرتیز> ریسورسز ایجاد میشه اضافه کنید.
3- startupposition=center پراپرتی

sia_2007
سه شنبه 08 تیر 1389, 11:38 صبح
فرم رو انتخاب کن؛ تو Properties گزینه Start up Position رو بذار روی Center Screen
از دو رویداد Mouse Enter و Mouse Leave برای Text Box هات استفاده کن
تست کن ببین تو یه سیستم دیگه کار میکنه یا نه؛ چون چندین روش الطاق عکس به برنامه داریم.

mahdi87_gh
سه شنبه 08 تیر 1389, 11:47 صبح
فرمم وقتي اجراش ميكنم نميتونم با موس جا به جاش كنم يعني خاصيت درگ كردنشو از دست داده چيكار كنم كه اگه كسي برنامه رو اجرا كرد بتونه فرم رو درگ كنه و جابه جاش كنه ؟
دوست عزیز یک متغیر isdown تعریف کن و در mousedown او رو true کن. در mouseMove فرم، اگر isdown=true فرم رو جابجا کن


آيا اين بكگراندي كه براي فرمم گذاشتم تو سيستم ديگه اگه اجرا بشه ايا اون عكس رو نشون ميده ؟ چون من هر چي تو پوشه برنامه گشتم اون عكس جايي ذخيره نشده بود يعني ادرس رو از درايوي كه توش عكسه ميخونه ؟ چيكار كنم كه تو سيستم ديگه عكس رو نشون بده ؟

بله نشون داده می شه

alasht
سه شنبه 08 تیر 1389, 11:48 صبح
مشكل نمايش فرم در وسط صفحه حل شد


از دو رویداد Mouse Enter و Mouse Leave برای Text Box هات استفاده کناينا كه شما گفتي كجا هست تو properties هست يا بايد برنامشو بنويسم اگه كامل توضيح بديد ممنون ميشم


دوست عزیز یک متغیر isdown تعریف کن و در mousedown او رو true کن. در mouseMove فرم، اگر isdown=true فرم رو جابجا کن

ميشه كدشو بنويسيد تا بهتر متوجه بشم و كدش رو تو فرم لود بايد قرار بدم ؟

salehbagheri
سه شنبه 08 تیر 1389, 11:56 صبح
برای جابجا کردن فرم با استفاده از موس:


public partial class Form1 : Form
{
// create a new object of Point, it will be used as a variable later
private Point mouse_offset;
public Form1()
{
InitializeComponent();
}
//the Event of MouseDown, record the offset of the mouse
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
mouse_offset = new Point(-e.X, -e.Y);
}
//the Event of MouseMove, move the form if user click the left button of the mouse
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
Point mousePos = Control.MousePosition;
mousePos.Offset(mouse_offset.X, mouse_offset.Y);
this.Location = mousePos; //move the form to the desired location
}
}
}

alasht
سه شنبه 08 تیر 1389, 12:07 عصر
دوست عزيز اين كد كه دادين قرار دادم ولي عمل نميكنه ايا بايد تنظيمات ديگه انجام بدم ؟
كد رو به اين صورت قرار دادم

public partial class Login : Form
{
// create a new object of Point, it will be used as a variable later
private Point mouse_offset;

public Login()
{
InitializeComponent();
}
//the Event of MouseDown, record the offset of the mouse
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
mouse_offset = new Point(-e.X, -e.Y);
}
//the Event of MouseMove, move the form if user click the left button of the mouse
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
Point mousePos = Control.MousePosition;
mousePos.Offset(mouse_offset.X, mouse_offset.Y);
this.Location = mousePos; //move the form to the desired location
}
}

alasht
سه شنبه 08 تیر 1389, 12:48 عصر
از دو رویداد Mouse Enter و Mouse Leave برای Text Box هات استفاده کن اقا بيخيال درگ حداقل پاسخ اين سوالمو بدين ؟
Mouse Enter و Mouse Leave كجاست ؟
اگه كد هست ميشه كدشو قرار بديد و محل قرار گيريشم بگيد ؟

salehbagheri
سه شنبه 08 تیر 1389, 13:09 عصر
دوست عزيز اين كد كه دادين قرار دادم ولي عمل نميكنه ايا بايد تنظيمات ديگه انجام بدم ؟

این موارد رو هم باید تغییر بدید:



Form1_MouseDown = Login_MouseDown
Form1_MouseMove = Login_MouseMove


دقت کنید که این موارد جزء Event های صفحه شما هستند...

sia_2007
سه شنبه 08 تیر 1389, 13:10 عصر
تو همون Properties ها ؛ بالاسرشون عکس یه رعد و برق هست.
اون جا لیست Event ها موجوده.
شما اول روی مثلا Mouse_Down دوبار کلیک کن؛ بعدش کدی که دوستمون گذاشتن رو کپی کن.
یا روی Mouse Enter دو بار کلیک کن؛ و هر کاری که دوست داشتی موقع وارد شدن موس انجام بشه رو بنویس.
فقط هر کنترلی رو که انتخاب کنی؛ اون جا Eventهای مربوط به اون رو میبینین.

alasht
سه شنبه 08 تیر 1389, 13:40 عصر
تشكر فراوان درست شد

حال با رويداد MouseEnterو ... اشنا شدم و فهميدم كدهاشو چطوري بنويسم حالا چه كدي بنويسم تو MouseEnter كه وقتي موس رفت رو تكست باكس رنگ بكگراندش و بردرش (border) عوض بشه ؟



private void txtuser_MouseEnter(object sender, EventArgs e)
{
اينجا چي بنويسم كه رنگ بكگراند تكس باكس و بردر رنگش عوض بشه ؟
}:قلب: