نمایش نتایج 1 تا 4 از 4

نام تاپیک: ایجاد یک رویداد در سی شارپ

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    ????? - ??????
    پست
    424

    ایجاد یک رویداد در سی شارپ

    سلام بچه ها

    آیا میشه رویدادی درست کرد که مثلا اگر مقدار متغیری عوض شد یه عمل انجام بشه؟ اگه میشه چه طوری؟

    با تشکر

    وبم

  2. #2
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    ????? - ??????
    پست
    424

    نقل قول: ایجاد یک رویداد در سی شارپ

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    به چه صورت مقدار متغیر تغییر میکنه. کد تغییر مقدار رو بزارید.
    خب مقدار متغیر را عوض می کنیم دیگه مثلا داریم:


    string str="Hello";


    بعد یه جا از برنامه یا توی یه کلاس دیگه مقدار متغر به شرح زیر عوض میشه:

    str="by";


    حالا می خواهیم به محض اینکه مقدار این متغیر عوض میشه مثلا خارج بشه

  3. #3

    نقل قول: ایجاد یک رویداد در سی شارپ

    ببینید برای اینکه در صورت تغییر مقدار، کار خاصی اتفاق بیفته کافیه اون عمل را در setter پراپرتی فراخوانی کنید و یا یک رویداد را raise کرد که میتونه رویدادی باشه که خدتون تعریف کردید یا از رویداد های PropertyChangingEventHandler و PropertyChangedEventHandler استفاده کنید.
    پیاده سازی:
    ابتدا یک پراپرتی به کلاس اضافه کنید از همان نوع متغیر.
    سپس کافیه یک رویداد از هر کدام از انواع PropertyChangingEventHandler و PropertyChangedEventHandler ایجاد کنید. فراخوانی هر کدام از این دو رویداد را در متدی انجام دهید. و متدها را قبل و بعد از تغییر مقدار در setter فراخوانی کنید.
    برای آنکه هیچ چیز را فراموش نکنید میتوانید کلاس خود را از دو اینترفیس INotifyPropertyChanging, INotifyPropertyChanged ارث بری کنید تا مجبور باشید این خاصیت ها را پیاده کنید.
    مثال:

    using System.ComponentModel;

    public class MyClass : INotifyPropertyChanging, INotifyPropertyChanged
    {
    private string myVariable;
    public string MyProperty
    {
    get { return myVariable; }
    set
    {
    if (value != myVariable)
    {
    OnMyPropertyChanging();
    myVariable = value;
    OnMyPropertyChanged();
    }
    }
    }

    public event PropertyChangingEventHandler PropertyChanging;
    virtual protected void OnMyPropertyChanging()
    {
    if (PropertyChanging != null)
    {
    PropertyChanging(this, new PropertyChangingEventArgs("MyProperty"));
    }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    virtual protected void OnMyPropertyChanged()
    {
    if (PropertyChanged != null)
    {
    PropertyChanged(this, new PropertyChangedEventArgs("MyProperty"));
    }
    }
    }


    طریقه استفاده هم که فرقی نداره:

    private void button2_Click(object sender, EventArgs e)
    {
    MyClass m = new MyClass();
    m.PropertyChanging += new PropertyChangingEventHandler(m_PropertyChanging);
    m.PropertyChanged +=new PropertyChangedEventHandler(m_PropertyChanged);
    m.MyProperty = "aaa";
    }

    void m_PropertyChanging(object sender, PropertyChangingEventArgs e)
    {
    MessageBox.Show("before");
    }

    void m_PropertyChanged(object sender, PropertyChangedEventArgs e)
    {
    MessageBox.Show("after");
    }
    آخرین ویرایش به وسیله Mahmoud.Afrad : شنبه 24 فروردین 1392 در 18:31 عصر

  4. #4
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    ????? - ??????
    پست
    424

    نقل قول: ایجاد یک رویداد در سی شارپ

    کد ها رو امتحان می کنم و بعد اگه جایی اشکال داشتم می پرستم فقط در مورد این چند کیمه اگه میشه توضیح بدید که چیند.

    setter و ایترفیس و virtual protected .

    با تشکر

تاپیک های مشابه

  1. سوال: ایجاد برنامه نصب در سی شارپ
    نوشته شده توسط mostafaslc در بخش C#‎‎
    پاسخ: 4
    آخرین پست: شنبه 28 شهریور 1388, 03:52 صبح
  2. ایجاد برنامه نصب در سی شارپ
    نوشته شده توسط r12784 در بخش C#‎‎
    پاسخ: 1
    آخرین پست: چهارشنبه 18 شهریور 1388, 02:08 صبح
  3. افزودن رویداد در سی شارپ
    نوشته شده توسط shineab در بخش C#‎‎
    پاسخ: 1
    آخرین پست: دوشنبه 16 شهریور 1388, 22:21 عصر
  4. ایجاد یک رویداد بوسیله ی کلاس
    نوشته شده توسط RoostaYeBekr در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: جمعه 27 دی 1387, 13:31 عصر
  5. سوال: چگونگی ایجاد Event (رویداد) !!
    نوشته شده توسط مهران رسا در بخش C#‎‎
    پاسخ: 1
    آخرین پست: جمعه 29 شهریور 1387, 09:32 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •