PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آموزش برنامه نويسي تحت ويندوز - سي شارپ دات نت - قسمت چهارم



Borna66
01-07-2010, 10:52 PM
رويداد هاي فرم - Form Events

همانطور که قبلا صحبت شده بود تمامی فرم هایی که شما ایجاد می کنید از یک کلاس به نام System.Windows.Forms.Form به ارث رفته اند و در واقع فرم هایی که شما در محیط Visual Studio .NET ملاحظه می کنید کلاس هایی هستند که از کلاس Form به ارث رفته اند. در کلاس Form تعداد زیادی رویداد تعریف شده است که به شما امکان می دهد تا در مواقع مورد نظر اطلاعاتی در رابطه با اتفاقاتی که بر روی فرم شما می افتد داشته باشید.
رويداد Form Load
اولین رویدادی که معمولا در فرم استفاده می شود (رویداد پیش فرض) رویداد Load می باشد. این رویداد دارای آرگونی از جنس EventArgs می باشد (که به این معناست که هیچ اطلاعات خاصی در رابطه با رویداد به شما نمی دهد). معمولا در مواقعی که شما می خواهید قبل از نمایش فرمتان یک سری کار را انجام دهید از این رویداد استفاده می کنید. برای استفاده از این رویداد کافی است که فرمتان را باز کنید (نمایش Visual) سپس بر روی فرم خود دوبار کلیک کنید. در این صورت یک متد به نام Form_Load در کد کلاس فرم شما ایجاد خواهد شد. تمامی کد هایی که در این متد نوشته شوند در موقع Load شدن فرم شما (قبل از نمایش) اتفاق خواهد افتاد. به عنوان مثال فرض کنید که شما یک فرم صدور فاکتور دارید. حالا موقع Load می خواهید که فرمتان اطلاعات قبلی ذخیره شده در بانک اطلاعاتی را خوانده و در یک GridView که در قسمت پایین فرم شما است نمایش دهد.
رويداد Form Closing
رویداد Form Closing زمانی رخ می دهد که درخواستی برای بستن فرم تان ارجاع شده باشد. چه این درخواست توسط کاربر با زدن کلید های Alt + F4 باشد(یا کلیک بر روی دکمه X) , چه از طریق کد و با فراخوانی Application.Exit یا this.Close و یا از هر طریق دیگر. این رویداد دارای آرگومانی از جنس FormClosingEventArgs می باشد که اطلاعاتی همچون منبع درخواست برای بسته شدن فرم (از طریق خاصیتی به نام CloseReason که از جنس یک enum به نام CloseReason) و خاصیتی به نام Cancel برای ممانعت از بسته شدن فرم می باشد.
فرض کنید که در یک فرم ورود اطلاعات فاکتور کاربر شما اقدام به ایجاد یک فاکتور جدید کرده است , اما در نهایت فراموش می کند که کلید ذخیره را بزند و بر روی دکمه بستن فرم کلیک می کند. حالا شما می توانید با چک کردن وضعیت فرمتان از طریق رویداد FormClosing و با استفاده از خصوصیت Cancel در صورت لزوم از بسته شدن فرمتان ممانعت به عمل آورید.

http://www.online-dl.com/forum/images/statusicon/wol_error.gif این تصویر تغییر اندازه داده شده است. برای مشاهده تصویر کامل روی این جایگاه کلیک کنید.http://www.tabatabaei.info/csharpsamples/closing.gif
استفاده از MessageBox
گاهي اوقات در نرم افزارهاي تحت ويندوز براي نمايش اطلاعات از کلاس MessageBox استفاده مي کنيم. براي اين کار کافي است متد Show از کلاس MessageBox را صدا بزنيم و پارامترهاي لازمش را مهيا کنيم. متد Show در کلاس MessageBox داراي چندين overload مي باشد. در مثال بالا من ابتدا پيغام هشداري که مي خواهم نمايش دهم را نويشتم و سپس عنوان پيغام را مشخص کردم . بعد کليد هايي که بايد نمايش دهند را از طريق يک enum به نام MessageBoxButton مشخص کردم ، سپس آيکون مورد نظر را انتخاب کردم (MessageBoxIcon) و در نهايت کليد پيش فرض را مشخص کنيد.
دقت کنيد که انتخاب کليد پيش فرض در خيلي از مواقع حياتي است. مثلا شما قبل از حذف يک رکود بيا مانند مثال قبل موقع بسته شدن فرمتان با استفاده از MessageBox يک تاييديه از کاربر مي خواهيد:

http://www.tabatabaei.info/csharpsamples/message.gif
البته مي توانيد با پاس کردن MessageBoxOption.RtlReading و همينطور MessageBoxOption.RightAlign امکان نمايش متون فارسي را از راست به چپ داشته باشيد.
در بيشتر موارد کاربران شما بدون توجه به متن MessageBox با زدن کليد Enter از شرٍ MessageBox خلاص مي شوند. پس من به صورت پيش فرض کليد دوم يعني No را انتخاب مي کنم که اگر Enter را کليک کرد ، رکورد حذف نشود و در صورتي که کاربر صراحتاَ کليد Yes را فشرد ، آن وقت رکورد را حذف مي کنم.
نکته اي که نبايد فراموش کنيد اين است که متد Show در کلاس MessageBox يک خروجي از جنس DialogResult به شما مي دهد. در نتيجه شما مي توانيد تشخيص دهيد که بعد از نمايش MessageBox کاربر شما کدام گزينه را انتخاب کرده و در مقابل آن عکس العمل مناسب را انجام دهيد.
کلاس فرم داراي رويداد هاي بسياري است ، که در حوصله اين سري آموزشي نيست اما در پست بعدي به چند رويداد مهم ديگر اين کلاس خواهيم پرداخت.

گردآورنده: طه - Borna66