سلام
ميخواستم بدونم كه e چيه و چه كارايي ميتونه انجام بده؟
Printable View
سلام
ميخواستم بدونم كه e چيه و چه كارايي ميتونه انجام بده؟
ميشه راجع به هر دوتاش هم توضيح بديد؟ممنون ميشم
e هیچ چیز نیست !!!
یک متغیر برای دسترسی به یک آبجکت.. مانند نمونه گیری هایی که تا الان انجام میدادید..
اما استاندارد دات نت برای تعریف event ها در Delegate آن ها که معمولا پارامتر دوم آن ، آرگومانی از جنس EventArgs و یا کلاسی مشتق شده از آن می باشد..
***
مثال
public delegate void ChangeEventHandler(object sender, CustomEventArgs e);
public event ChangeEventdhandler DataAdded;
CustomEventArgs کلاسی است که از EventArgs مشتق شده
public class CustomEventARgs : EventArgs
{
// members for class
}
بعضی از لغات یا کلمات برای نمونه گیری از یک سری کلاس خاص استفاده می شوند ( این فقط مرسوم است نه اجبار نه قانون و نه هیچ چیز دیگه)
مثلا موقع تعریف یک Exception در بلاک Catch از ex که نشاند دهنده exception می باشد استفاده می شوئد.
try
{
} catch(Exception ex)
{
//handle exception
}
e هم برای event ها مورد استفاده قرار می گیرید.
پارامتر e که معمولا در رویدادها دیده میشه، یک نمونه از کلاس EventArgs یا کلاسهای مشتق شده از اون هست که اطلاعاتی رو راجع به رویدادی که اتفاق افتاده به ما میده.نقل قول:
ميخواستم بدونم كه e چيه و چه كارايي ميتونه انجام بده؟
مثلا در رویداد FormClosing مربوط به یک Form، پارامتر e از نوع کلاسی به نام FormClosingEventArgs است که از System.EventArgs مشتق شده و اطلاعات و قابلیتهایی راجع به رویداد FormClosing به ما ارائه میده، مثلا یکی از این خاصیت ها، Cancel هست که میتونی رویداد مورد نظر رو در زمان وقوع این رویداد Cancel کنی.
در مورد کلاس EventArgs توضیح می دین
کلاسی که از روش متغیر e مورد بحث ساخته شده است.
ممنون از راهنماییتون.یعنی اینکه هر رویدادی یک e ایجاد میکنه؟یا e ثابته و در رویدادهای مختلف مقدارش عوض میشه؟منظورم اینه که آیا ما در هر برنامه یک e داریم؟یا با هر رویداد یک e مختص اون رویداد ایجاد میشه؟نقل قول:
مثلا در رویداد FormClosing مربوط به یک Form، پارامتر e از نوع کلاسی به نام FormClosingEventArgs است که از System.EventArgs مشتق شده و اطلاعات و قابلیتهایی راجع به رویداد FormClosing به ما ارائه میده، مثلا یکی از این خاصیت ها، Cancel هست که میتونی رویداد مورد نظر رو در زمان وقوع این رویداد Cancel کنی.
مثال :
مثلا یکی از کاراش اینه که تو رویداد یک دکمه وقتی e رو صدابزنی کلیدهای صفحه کلید رو میبینید و میتونید از اونها استفاده کنید
private void btn_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.controlkey)
{
messagebox.show("کلید کنترل فشرده شد")
}
البته این یه مثال ساده بود ، اساتید توضیحات فنی دادند ، کلا چیزه مفیدیه :)
چرا در بعضی رویداد ها e متفاوت با بعضی دیگه است؟من خواستم برای جلوگیری از تغییر سایز با دابل کلیک روی Titlebar فرمم داخل رویداد SizeChanged همین e.cancel یا e.handeled=true رو بنویسم .اما e اونجا این متد یا خاصیت رو نداشت.
اگر فرق این دو هم بگید ممنون میشم.
لطفا" در مورد Delegate تحقیق کنید.
10 صفحه که بخونی هیچی نمی فهمی.
4 صفحه دیگه بخونی یه چیزایی می فهمی.
بعد از این هرچقدر بیشتر بخونی بیشتر میفهمی.
از اینجا شروع کن:
http://en.wikipedia.org/wiki/Delegate_(.NET)
http://msdn.microsoft.com/en-us/library/system.delegate.aspx