PDA

View Full Version : سوال: (تغییر مقدار Lable.Text به محض تغییر یک متغیر) یا (مقید شدن یک Label.Text به یک متغیر)



behzadkhan
جمعه 16 مرداد 1394, 10:45 صبح
با سلام

و عرض خسته نباشید به تمامی کاربران

قرار هست در نرم افزاری که در حال طراحی آن می باشم. یکسری اطلاعات کلی که عددی هستند را کاربر همیشه بتواند ببیند. من آن ها در در StatusBar قرار دادم. همچنین باید هنگام تغییر پیدا کردنشان در همان لحظه آن اعداد که در

StatusBar هستند تغییر کند.

به عنوان مثلا یکی از این اعداد تعداد اعضا ثبت نام شده می باشند.

وقتی برنامه اجرا می شود قبل از نمایش فرم اصلی یک کوئری می زنم و تعداد کل اعضا را بدست می آورم و در یک متغییر قرار می دهم.

و

موقع رویداد لود فرم اصلی slblTotalMember.Text را برابر با مقدار آن متغییر می کنم. (slblTotalMember یک لیبل درون StatusBar هست)

حالا وقتی من یک عضو جدید ثبت نام می کنم و یا یک از اعضا را حذف می کنم. آن متغییر و آن لیبل باید تغییر بکنند.

من این تغییر را باید در هر دویشان اعمال کنم.

اما می خواهم کاری کنم که به محض تغییر کردن آن متغییر به صورت اتوماتیک آن لیبل هم تغییر پیدا کند.

بنابراین

باید روشی پیدا کنم که آن مقدار Text آن لیبل به آن متغییر مقید شود. یعنی به محض تغییر متغیر مورد نظر لیبل نیز تغییر پیدا کند.

خوب من می دانم که می توان به استفاده از set , get برای یک متغییر این کار را انجام داد.

اما این کار را فقط می توان در یک فرم یا یک کلاس انجام داد.

ولی خوب فرم ثبت نام ؛ یک فرم حذف و یک فرم اصلی برنامه دارم.

بنابراین نمی توانم این کار را انجام بدهم(البته به نظر من)

================================================== ==========

منتظر راه کارها و روش های شما دوستان می باشم . . .

با تشکر

behzadkhan
جمعه 16 مرداد 1394, 16:09 عصر
با سلام

دوستان عزیز

مشکل برطرف شد.

یک راه پیدا کردم.

================================================== ===========================

یک کلاس به شکل زیر ایجاد کنید:


public class cTotalList
{
public int _Member;


public int Member
{
set
{
_Member = value;
this.slblTotalMember.Text = _Member.ToString();
}
get
{
return _Member;
}
}


public DevComponents.DotNetBar.LabelItem _slblTotalMember;

public DevComponents.DotNetBar.LabelItem slblTotalMember
{
set
{
_slblTotalMember = value;
_slblTotalMember.Text = this.Member.ToString();
}
get
{
return _slblTotalMember;
}
}


public cTotalList()
{
this.slblTotalMember = new DevComponents.DotNetBar.LabelItem();
}
}


سپس یک نمونه استاتیک از آن ایجاد کنید مثلا در کلاس Program.cs

بعدا از آن

در هنگام لود فرم اصلی آن لیبلی که قرار هست تغییرات در آن نمایش داده شود(در اینجا شی کنترل لیبل آیتم با نام slblTotalMember) را در لیبل آیتم کنترلی که در کلاس بالا تعریف کردید قرارد دهید.

اکنون هر وقت پروپرتی با نام Member از کلاس cTotalList تغییر کند. بصورتی اتوماتیک slblTotalMember.Text هم بصورت اتوماتیک انجام می شود.

این کار را با همان get set انجام شد.


private void frmMain_Load(object sender, EventArgs e)
{
Program.TotalList = new cTotalList();
Program.TotalList.slblTotalMember = slblTotalMember;
}



================================================== ============

از دوستان می خواهم ایراد روش مرا بیان کنند.

================================================== ============

از کاربران گرامی می خواهم تا روش های خودشان را ارائه دهند.

با تشکر