PDA

View Full Version : فرستادن متغیر به تابع



sh-eng
سه شنبه 01 آذر 1390, 21:16 عصر
من از این قطعه کد استفاده کردم:

private void Form1_Load(object sender, EventArgs e){button1.Click += new EventHandler(check);button2.Click += new EventHandler(check);}public void check( object sender , EventArgs e ){string ctrlName = ((Control)sender).Name;MessageBox.Show(ctrlName);}

حالا می خوام از توی برنامه به متغیر int به تابع check پاس کنم ولی error میده چه جوری باید این کارو بکنم؟

محمد فدوی
یک شنبه 06 آذر 1390, 20:25 عصر
شما نمیتونید به این تابع یه عدد ارسال کنید چون توی تابع فرض کردید که sender (که آبجکته) از نوع Control هستش و وقتی یه عدد به این تابع پاس می کنید ارور میده.
اینجا رو میگم:
string ctrlName = ((Control)sender.Name);
اگر میخواهید که تابعتون هم بتونه نام یک کنترل رو نمایش بده و هم مقدار رشته ای یک نوع دیگه می تونید اینجوری اینکار رو بکنید:

private void Check(object sender, EventArgs e)
{
string value;
if(sender is Control)
{
value = ((Control)sender).Name;
}
else
{
value = sender.ToString();
}
MessageBox.Show(value);
}


حالا همه ی تکه کدهای زیر قابل اجرا هستن:

EventArgs e = new EventArgs();
Check(432, e);
Check("Hello World!", e);
Check(new Button() { Name = "I am a Button" }, e);