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

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

  1. #1

    ساخت یک رویداد جدید برای کنترل در سی شارپ

    یکی از دوستان پرسید که چطور می تونم برای یک کامپوننتی که خودم ساختم یک رویداد به اسم X بسازم؟ که بعد از ساخت این رویداد اون رو هندل کنم ؟

    برای مثال کنترل button در سی شارپ رویدادی به اسم Click دارد که به محض کلیک کردن روی دکمه این رویداد اتفاق می افتد و تابع هندل کننده ی آن یعنی Button_Click اجرا می شود ، آیا در سی شارپ این امکان فراهم است که خودمون بتونیم رویدادی جدید برای کنترلمون تعریف کنیم ؟
    اگر ممکنه با کد مثالی را بزنید . مننون از شما

  2. #2

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

    به مثال زیر توجه کنید :


    public class MyLabel : Control
    {
    public event EventHandler SetFinalText;

    public string FinalText { get; set; }

    public override string Text
    {
    get
    {
    return base.Text;
    }
    set
    {
    base.Text = value;
    Invalidate();
    if( base.Text.Equals( FinalText ))
    SetFinalText( this, new EventArgs( ));
    }
    }

    protected override void OnPaint(PaintEventArgs e)
    {
    base.OnPaint(e);
    e.Graphics.DrawString(Text, this.Font, System.Drawing.Brushes.Red, new System.Drawing.PointF(10, 10));
    }
    }




    در این کد کنترلی که ایجاد شده است رویداد جدیدی بنام SetFinalText ساختیم.

    یک پروپرتی بنام FinalText هم ایجاد کرده ایم که چنانچه مقدار Text توسط کاربر برابر این مقدار ست شود این event فراخوانی میشود.
    نحوه استفاده هم بصورت زیر است :
    فرض میکنیم شما این کنترل را روی فرم خود گذاشته اید و پروپرتی FinalText آن را با hello ست کردهاید. همچنین در قسمت events از بخش Properties این کنترل با انتخاب رخداد SetFinalText ، مثلا کد زیر را برای زمانی که این رخداد باصطلاح fire میشود نوشته اید :


    private void myLabel1_SetFinalText(object sender, EventArgs e)
    {
    MessageBox.Show("set final text");
    }



    یک textbox هم روی قرم قرار دارد که کاربر بوسیله این textbox امکان تغییر text کنترل MyLabel1 را دارد هرگاه کاربر مقدار hello را به کنترل شما ست کند event fire صورت میگیرد
    آخرین ویرایش به وسیله emad2012 : پنج شنبه 18 خرداد 1391 در 12:51 عصر

  3. #3
    کاربر دائمی آواتار sds1920
    تاریخ عضویت
    تیر 1388
    محل زندگی
    اصفهان
    سن
    34
    پست
    483

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

    ساخت رويداد خيلي ساده هست اما به نظر کار سختي مياد.
    اين کار سه مرحله داره که توضيح مي دم.

    1)تعريف delegate.
    delegate در واقع ساختار يک تابع رو معرفي مي کنه و اين delegateي که شما تعريف مي کنيد ساختار تابع رويداد شما رو مشخص مي کنه.
    معمولا ساختار رويدادها به صورت زير هست :

    delegate void MyDelegateName(object sender,EventArgs e);

    همونطوري که دوستمون گفتند اگه از delegateبه نام EventHandler استفاده کنيد همين ساختار رو داره ولي اگه بخواين ساختار دلخواهي تعريف کنيد بايد مثل کد بالا يک Delegate جديد بسازيد.

    مرحله هاي 2 و 3 از اينم راحتره.

    2)در اين مرحله بايد يک event رو با کلمه کليدي event از روي delegate که در بالا تعريف کرديد تعريف کنيد يعني :

    public event MyDelegateName MyEventName;


    3)مرحله سوم فراخواني event هست.دقيقا مثل فراخواني يک تابع.
    بيشتر برنامه نويسايي که تازه مي خوان يک event ايجاد کنند توي اين بخش گيج مي شن.ولي اين نکته رو بدونيد وقتي شما يک کلاس مي نويسيد مالک و صاحب اون کلاس شما هستيد.پس هر کاري بخواين مي تونيد توش انجام بديد.يعني اينکه event رو هرجا دوست داشته باشيد مي تونيد فراخواني کنيد اما منطقي اين هست در جايي فرخواني کنيد که مرتبط با مسئله باشه.
    يک نکته اينکه قبل از اينکه event رو فراخواني کنيد اول بررسي کنيد که null نباشه.

    if(MyEventName!=null)
    MyEventName(this,new EventArgs());


    موفق و پيروز باشيد.

  4. #4

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

    سلام
    میخوام از پورت موازی بخونم
    هر بار که یه داده میاد یه بیت تو رجیستر کنتذلش یک میشه
    حالا میخوام یه رویداد بسازم که با یک شدن یه عدد اتفاق بیوفته
    اگه میشه کامل و ساده توضیح بدید آخه تازه واردم

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

  1. ساخت رویداد textchange برای یک یوزر کنترل
    نوشته شده توسط ali.ghodrati در بخش C#‎‎
    پاسخ: 1
    آخرین پست: سه شنبه 11 آبان 1389, 14:17 عصر
  2. ساخت رویداد برای کنترل
    نوشته شده توسط Hossis در بخش VB.NET
    پاسخ: 1
    آخرین پست: جمعه 20 آذر 1388, 17:36 عصر
  3. کنترل رویداد OnExit برای EditBox
    نوشته شده توسط shayan_delphi در بخش برنامه نویسی در Delphi
    پاسخ: 7
    آخرین پست: چهارشنبه 23 آذر 1384, 14:25 عصر
  4. پاسخ: 2
    آخرین پست: شنبه 19 آذر 1384, 10:04 صبح
  5. نحوه ساخت رویداد برای کنترل های داینامیک
    نوشته شده توسط kastakoorta در بخش برنامه نویسی در Delphi
    پاسخ: 3
    آخرین پست: شنبه 07 آبان 1384, 01:49 صبح

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

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