تبلیغات
تبلیغات

آموزش ایجاد رویداد دلخواه و شخصی در سی شارپ

طبیعتا اگر با سی شارپ و بخصوص در محیط Windows Form Applications کار کرده باشید، با رویدادها سر و کار داشته‌اید و مواردی مثل event ها را دیده‌اید. برای مثال، دکمه‌ای را برروی فرم خود درگ می‌کنید و سپس با دوبار کلیک برروی آن، به رویداد کلیک شدن این دکمه منتقل می‌شوید؛ که یک متد خاصی بوده و ورودی‌هایی را دریافت می‌کند.

اما سوال اینجاست که چطور و چگونه می‌توانیم برای مثلا یک کلاسی که نوشتیم، قابلیت رویداد نیز قرار دهیم!

مراحل کار

کلاس زیر را در نظر بگیرید:

فرض کنید قصد داریم تا هر موقع متد Test با ورودی salam فراخوانی شد، رویدادی اجرا شود؛ اما بیایید ابتدا خود این رویداد را تعریف کنیم:

گفتیم که یک delegate به نام MyEventHandler داریم که هیچ ورودی‌ای دریافت نکرده و خروجی نیز ندارد! در واقع delegate ها، متدهای بدون بدنه هستند و تنها ساختار متدی را تعریف کرده‌ایم. حالا در ادامه، گفتیم که یک event یا همان رویداد، از نوع delegate ای که تعریف کردیم، در اختیار داریم و نام آن را SalamEvent قرار دادیم.

در ادامه و داخل متد Test، ورودی را بررسی می‌کنیم که اگر برابر salam بود و همچنین، رویداد SalamEvent مقداردهی شده بود، آن را اجرا کند. حالا بیایید یک آبجکتی از این کلاس بسازیم و آن را آزمایش کنیم:

خروجی:

Event Salam
salam
bye

به همین سادگی!

نکات تکمیلی

1. از آنجایی که متد Main به‌صورت استاتیک می‌باشد، مجبور شدیم تا متد رویداد را نیز به‌صورت استاتیک تعریف کنیم.

2. می‌توانید برای delegate های خود، خروجی و ورودی تایین کنید؛ سپس از آن در رویدادهای متنوعی استفاده کنید.

3. می‌توانید از سایر delegate های آماده نیز استفاده کنید. مثلا در ویندوز فرم اپلیکیشن‌ها، چیزی به نام System.EventHandler وجود دارد.

4. می‌توانید به‌جای new کردن delegate در هنگام مقداردهی رویداد، فقط نام متد را قرار دهید.

5. اگر از ویژوال استودیو استفاده می‌کنید، پس از نوشتن علاوه مساوی مقابل رویداد، می‌توانید Tab را بزنید تا پیاده‌سازی به‌صورت خودکار انجام شود.

6. نام گذاری FuLLKade_SalamEvent اجباری نبوده و فقط یک نوع قواعد نام‌گذاری است.

7. شما می‌توانید با منها مساوی نیز رویدادی را حذف کنید؛ اما در این صورت به آبجکتِ delegate ای که new کرده‌اید، نیاز خواهید داشت. البته به کمک اسم متدِ پیاده‌سازی شده مثل FuLLKade_SalamEvent نیز می‌توانید آن را حذف کنید.

8. می‌ـوانید از یک متد پیاده‌سازی شده مثل FuLLKade_SalamEvent، برای چندین delegate و رویداد دیگر استفاده کنید.

9. می‌توانید برای یک رویداد، تعداد زیادی متد تعیین کنید؛ که در نتیجه، به ترتیب زمان اضافه شدنشان، یکی پس از دیگری اجرا خواهند شد.

10. فقط از علاوه‌مساوی و منهامساوی می‌توانید جهت تخصیص رویداد جدید و حذف آن استفاده کنید و نمی‌توانید از مساوی خالی استفاده کنید.

کانال تلگرام فول کده
ساخت رویداد دلخواه در سی شارپ، ساخت رویداد شخصی در سی شارپ، استفاده از رویدادها در سی شارپ، ساخت رویداد در سی شارپ، ساخت event شخصی در سی شارپ، ساخت delegate شخصی در سی شارپ، ساخت ایونت در سی شارپ، ساخت دلگیت در سی شارپ، ساخت event در C#، آموزش رویدادها در سی شارپ، آموزش دلگیت ها در سی شارپ، آموزش کار با رویدادها در سی شارپ، آموزش کار با delegate ها در سی شارپ، آموزش کامل رویدادها در سی شارپ، آموزش کامل delegate ها در سی شارپ، تعریف رویداد در سی شارپ، چطور میتونم برای کلاس خودم رویداد تعریف کنم تو سی شارپ
تبلیغات

درباره نویسنده

هادی اکبرزاده

[ مدیر فول کده ]

علاقه‌مند به اشتراک‌گذاری اطلاعات در هر زمینه‌ای
برنامه‌نویس فول استک

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نظرات ثبت شده بدون دیدگاه