PDA

View Full Version : ساخت یک دکمه با User Control



hamed767676
جمعه 11 بهمن 1392, 02:51 صبح
سلام دوستان خسته نباشید

من یه UserControl دکمه ایجاد کردم. یعنی یه لیبل داخلش هست که کاربر کلیک کنه به عنوان دکمه سفارشی عمل کنه . حالا یه مشکلی هست
وقتی داخل فرم که میخوام ازش استفاده کنم وقتی دوبار روش کلیک میکنم که بره تو کد نویسی ، رویداد Load اون فراخونی میشه
بعدش رفتم کد هامو تو رویداد Click اون نوشتم بازم اجرا نمیکنه و فقط رویداد Load اون اجرا میکنه
ممنون میشم اگه راهنمایی کنید که چه طوری میتونم مانند یک Button ازش استفاده کنم که وقتی روش کلیک میکنم بره تو رویداد Click و کد هام تو این رویداد اجرا بشه همانند Button.

saied_hacker
جمعه 11 بهمن 1392, 11:37 صبح
چون میخاید روی لیبل کلیک بشه و یه اتفاقی بیفته و لیبل هم داخل usercontrol هست مستقیم نیمتونید بهش دسترسی داشته باشید ...

برای همین باید با استفاده از delegate به تابع کلیک لیبل ارجاع بدید

public delegate void MouseDown();
public event MouseDown MyLblMouseDown;
private void label1_MouseDown(object sender, MouseEventArgs e)
{
if (MyLblMouseDown != null)
MyLblMouseDown();
}

این کد داخل uc تعریف میشه توی رویداد کلیک اگه مقدار MyLblMouseDown برابر Null نباشه تابعی که بهش اشاره میکنه اجارا میشه که همنون تابعی هست که روی فرم شما نوشته میشه
مثل این کد:

private void Form1_Load(object sender, EventArgs e)
{
uc11.MyLblMouseDown +=uc11_MyLblMouseDown;
}

private void uc11_MyLblMouseDown()
{
MessageBox.Show("HI!");
}

اینجا دیگه کد مربوط به کلیک روی لیبل هر چیری میتونه باشه و لازم نیست داخل uc تعریف بشه ...