PDA

View Full Version : آیا در #C، چیزی شبیه trigger وجود داره؟!



naeeme
شنبه 03 آذر 1386, 16:49 عصر
من در یک برنامه چند فرم فرزند دارم که می خواهم پس از تغییر یک متغیر و رسیدن به یک مقدار خاص، فرم والد به صورت خودکار تغییر وضعیت بدهد. مثلا چند منوی آن غیر فعال شود.
راه حلی شبیه عملکرد trigger در Data baseها وجود دارد؟؟
چه راه حلی پیشنهاد می کنید؟
البته راه حلی هست که مثلا در هر بار تغییر وضعیت، یک متد از یک کلاس که فقط یک instance از آن در کل پروژه وجود دارد، فراخوانی شود اما راه حل خوبی برای پروژه من نیست.

PC2st
شنبه 03 آذر 1386, 17:54 عصر
چه راه حلی پیشنهاد می کنید؟
یکی از راه حلها اینست که برای آن متغیر یک property بگذارید تا مقدار متغیر از طریق property تغییر پیدا کند و یک event هم به کلاس اضافه کنید. هر وقت که مقدار آن متغیر از طریق property عوض شد (بلاک set)، باید event ای که ایجاد کرده اید رو صدا بزنید.
event ای که ایجاد کرده اید برای این بکار میره که فرم والد از آن تغییر با خبر بشه. طرز کارش رو شبیه به رویداد EnabledChanged از کنترلها در نظر بگیرین که هر وقت property بنام Enabled تغییر کنه، event بنام EnableChanged هم رخ میدهد.

mohammad272005
یک شنبه 04 آذر 1386, 06:13 صبح
publiceventEventHandler VariableChanged;
#region Variable
privateint _Variable;
///<summary>
/// Property description
///</summary>
publicint Variable
{
get
{
return _Variable;
}
set
{
if (_Variable == value)
return;
_Variable = value;
if (VariableChanged != null)
VariableChanged(this, EventArgs.Empty);
}
}
#endregion