PDA

View Full Version : سوال: تابع On Click چه کاربردی دارد؟



alexmcse
جمعه 01 اسفند 1393, 20:02 عصر
سلام

protected override void OnClick(EventArgs e) {
base.OnClick(e);
}

کار این تابع چیست؟

rasol_afkham
جمعه 01 اسفند 1393, 20:18 عصر
رویداد کلیک را فراخوانی می کنه.

plus
جمعه 01 اسفند 1393, 20:19 عصر
این متد برای وجود امکان سفارشی کردن نحوه فراخوانی رویداد کلیک برای کلاس هایی که از کلاس کنترل ارث بری میکنن گذاشته شده.
این متد رویداد Click‌رو Raise میکنه و در کلاس پایه پیاده سازی شده. به صورت virtual تعریف شده تا اگه شما بخوای که رفتارش رو عوض کنی تا در زمان دلخواه بخوای رویداد Click رو Raise کنی، این متد رو فراخوانی کنی.
پیاده سازیش معمولن در کلاس پایه به این صورته:

protected virtual void OnClick(EventArgs e) {
if (this.Click != null) {
this.Click(this, e);
}
}

در داخل کلاس پایه، وقتی روی کنترل مورد نظر کلیک میشه، و کنترل این رو متوجه میشه، با فراخوانی متد OnClick در درون خودش، باعث میشه رویداد Click به اصطاح Raise‌ بشه و کدی که استفاده کننده از کلاس در این رویداد نوشته اجرا بشه. حالا فرض کن شما میخوای که با کلیک بر روی کنترل رویداد Click‌ برای استفاده کننده Raise‌ نشه! شما این متد رو override میکنی و از فراخوانی متد base.OnClick جلوگیری میکنی:

protected override void OnClick(EventArgs e) {
// base.OnClick(e);
}

و یا فرض کن میخوای رویداد Click به صورت دلخواه برای کنترلی که داری ازش ارث بری میکنی اجرا بشه. مثلا یک UserControl نوشتی و یک دکمه درون اون داری. میخوای با کلیک بر روی دکمه، رویداد Click مربوط به UserControl اجرا بشه. در این صورت:

class UserControl1 : UserControl {
// ..
// ..
// ..
private void button1_Click(object sender, EventArgs e) {
base.OnClick(EventArgs.Empty);
}

در این حالت با کلیک بر روی دکمه، کدی که در رویداد Click مربوط به UserControl نوشته شده اجرا میشه.
در آخر هم، معمولا برای اغلب رویدادهای کنترل‌ها، متد مشابه این متد رو داریم. برای مثال برای رویداد KeyDown متد OnKeyDown رو داریم و ... .