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

نام تاپیک: اجرای یک رویداد در هنگام تغییر خواصیت در یک کامپوننت

  1. #1
    کاربر دائمی آواتار navidiran
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    ارومیه
    پست
    242

    اجرای یک رویداد در هنگام تغییر خواصیت در یک کامپوننت

    سلام دوستان این کد مربوط به ایجاد یک خواصیت جدید در کامپوننت دلخواه خودم است. هدف این است که با تغییر خواصیت متدی اجرا شود. من راه دیگری غیر از اینکه در تنظیمات set متد اجرا شود را پیدا نکردم . آیا راه دیگری هست ؟ خلاصه اینکه بصورت زیر نوشتم:

    public enum ButtonMode
    {
    Function ,
    Select ,
    Large ,
    Mini
    }
    public ButtonMode ModeSelect
    {
    get { return 0;}d
    set
    {
    if ( value == ButtonMode.Function )
    {
    this.Size = new System.Drawing.Size( 100 , 50 );
    }
    else
    if ( value == ButtonMode.Select )
    {
    this.Size = new System.Drawing.Size( 50 , 50 );
    }
    }
    }


    الان من در متد get که با رنگ سبز مشخص کردم چی بنویسم که جواب بگیرم و متد get کار کنه؟
    البته دوستان حرفه ای میدونم که پیش خودشون میگن که من هنوز مفهوم get رو یاد نگرفتم ، بله درسته اما اینجا میخوام کمی جنبه آموزشی هم داشته باشه.
    ممنون میشم کسی راهنمایی کنه و البته در مورد همین get , set هم توضیح مختصر و مفید دیگری هم بدین ممنون میشم.

  2. #2

    نقل قول: اجرای یک رویداد در هنگام تغییر خواصیت در یک کامپوننت

    من برا اضافه كردن رويداد به كومپوننت كه ساختم اين كار كردم
    اول داخل كد كمپوننت

    public event EventHandler Delete;
    public void OnDelete()
    {
    EventHandler Tmp = Delete;
    if (Tmp != null) Tmp(this, EventArgs.Empty);
    }


    حالا ميام يه دكمه ميزادم روي كومپوننت مثلا به نام delete
    داخل رويداد كليكش اينو مينويسم

    Delete(this, EventArgs.Empty);



    حالا روي فرمم كه از كومپوننت استفاده كردم اين كارو ميكنم


    MyComponent tmp = new MyComponent();
    tmp.Delete += new EventHandler(tmp_Delete);

    void tmp_Delete(object sender, EventArgs e)
    {
    //كدهاي كه ميخواهيم با اجراي اين رويداد اجرا شوند
    }



    حالا با كليك بر روي دكمه delete كومپوننت اين كدهاي شوا كه تو فرمت نوشتي اجرا ميشن

  3. #3
    کاربر دائمی آواتار navidiran
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    ارومیه
    پست
    242

    نقل قول: اجرای یک رویداد در هنگام تغییر خواصیت در یک کامپوننت

    اینها همه تعریف و تنظیم رویداد روی کامپوننت هستن که بعد از انجام کاری روی کامپوننت اجرا میشوند ولی من میخوام با تغییر یک خواصیت (property) ، رویداد خودکار اجرا بشه مثلا تغییر سایز.

  4. #4

    نقل قول: اجرای یک رویداد در هنگام تغییر خواصیت در یک کامپوننت

    خب شما بجاي ايجاد دكمه delete و نوشتن اون يك خط كد بيا اون كد رو تو رويداد sezechenged بزار
    با اين كار وقتي سايز كمپوننتت تغيير كرد اون كدها اجرا ميشه

  5. #5

    نقل قول: اجرای یک رویداد در هنگام تغییر خواصیت در یک کامپوننت

    باید رویداد یا متد رو در setter پراپرتی فراخوانی کنی.

  6. #6
    کاربر دائمی آواتار navidiran
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    ارومیه
    پست
    242

    نقل قول: اجرای یک رویداد در هنگام تغییر خواصیت در یک کامپوننت

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    باید رویداد یا متد رو در setter پراپرتی فراخوانی کنی.
    این راه درست است. فقط چگونگی این کار رو هنوز نتونستم حل کنم. کسی میتونه یه راهنمایی اولیه داشته باشه ؟
    البته با تشکر از hamid_hr

  7. #7

    نقل قول: اجرای یک رویداد در هنگام تغییر خواصیت در یک کامپوننت

    نمیدونم مشکل چیه. طبق کدی که در پست1 گذاشتی در set متد را فراخوانی کن یا رویداد را raise کن یا مستقیم تغییر سایز بده، شرط بنویس یا هر کدی که میخوای با ست شدن پراپرتی انجام بشه.

    class MyClass
    {
    private int a;
    public int A
    {
    get { return a; }
    set
    {
    a = value;
    ChangeSize(); // raise event
    }
    }

    private void ChangeSize()
    {
    // ...
    }
    }

    اگر هم میخوای فقط زمانی که مقدار جدید با مقدار قبلی متفاوت بود تغییر سایز انجام بشه value را با مقدار قبلی مقایسه کن.(برای این کار یک متغیر خصوصی برای هر پراپرتی نیازه). فراخوانی رو به اینصورت اصلاح کن:

    if (a != value)
    {
    a = value;
    ChangeSize(); // raise event
    }

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

  1. پاسخ: 2
    آخرین پست: شنبه 11 خرداد 1392, 10:33 صبح
  2. پاسخ: 0
    آخرین پست: جمعه 10 خرداد 1392, 04:45 صبح
  3. سوال: اجرای یک تابع در خود SQL هنگام تغییر در بانک
    نوشته شده توسط ENG_Torshani در بخش SQL Server
    پاسخ: 1
    آخرین پست: شنبه 22 خرداد 1389, 16:26 عصر
  4. پیغام خطا هنگام تغییر اندازه و Posrition فرم
    نوشته شده توسط پریسا نامدار در بخش برنامه نویسی در Delphi
    پاسخ: 3
    آخرین پست: دوشنبه 06 مهر 1383, 03:09 صبح
  5. جلوگیری حرکت TaskBar هنگام تغییر Resolution
    نوشته شده توسط hadi55 در بخش برنامه نویسی در Delphi
    پاسخ: 3
    آخرین پست: دوشنبه 22 تیر 1383, 21:18 عصر

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

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