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

نام تاپیک: ساخت ایونت برای کنترلهایی که به صورت آرایه تعریف شدند

  1. #1

    ساخت ایونت برای کنترلهایی که به صورت آرایه تعریف شدند

    دوباره سلام . سرچ کرد چیزه به درد به خوری پیدا نکردم فقط تونستم این کدو پیدا کنم که نمیدونم به درد می خوره یا نه :

    txt[i].Keydown +=
    new System.EventHandler(this.textBox1_Keydown);

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

  2. #2
    کاربر دائمی آواتار mostafaaa
    تاریخ عضویت
    دی 1386
    محل زندگی
    جزیره کیش
    پست
    723

    نقل قول: ساخت ایونت برای کنترلهایی که به صورت آرایه تعریف شدند

    سلام دوست من
    اين Sample كوچيك رو نگاه كن ، فكر كنم كارت رو راه بندازه!
    private void Form1_Load(object sender, EventArgs e)
    {
    List <Button > MyButtons=new List<Button>() ;
    foreach (Control ctrl in this.Controls)
    {
    if (ctrl is Button)
    {
    MyButtons.Add((Button )ctrl );
    }
    }
    foreach (Button btn in MyButtons)
    {
    btn.Click += ClickONButtons;
    }
    }
    private void ClickONButtons(object sender, EventArgs e)
    {
    MessageBox.Show(((Button)sender).Text);
    }

    البته Handler هاشون رو ميتونستم توي همون حلقه اولي بهشون نصبت بدم ولي براي اينكه بهتر دركش كني جداگانه اين كار رو كردم
    يا علي

  3. #3

    نقل قول: ساخت ایونت برای کنترلهایی که به صورت آرایه تعریف شدند

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

    ArrayList TxtAL = new ArrayList();
    for (int i = 0; i < this.Controls.Count; i++)
    {
    if (this.Controls[i].GetType().ToString() == "System.Windows.Forms.TextBox")
    TxtAL.Add(
    this.Controls[i]);
    }
    for (int i = 0; i < TxtAL.Count; i++)
    MessageBox.Show(TxtAL[i].ToString());

  4. #4

    نقل قول: ساخت ایونت برای کنترلهایی که به صورت آرایه تعریف شدند

    دوست عزیز شما می خواین ایونت تعریف کنید یا کنترلهاتون رو به یه آرایه اضافه کنید.....
    کلا در این مورد بهتره از Generic استفاده کنید و قبل از اینکه کنترل رو به لیست اضافه کنید ایونتش رو تعریف کنید........

    this.Controls[i].GetType().ToString() == "System.Windows.Forms.TextBox"
    چرا این همه ؟!!!...

    this.Controls[i].GetType() == typeof(TextBox)

  5. #5

    نقل قول: ساخت ایونت برای کنترلهایی که به صورت آرایه تعریف شدند

    فکر می کنم نمیشه واسه کنترلهای آرایه ای ایونت درست کرد واسه همین هم باید مقدار مثلا تکست باکسارو برزیم تو آرایه بعد هر بلایی خواستیم سرشون در بیاریم دوباره برزیم تو تکستباکسامون

  6. #6
    کاربر دائمی آواتار mostafaaa
    تاریخ عضویت
    دی 1386
    محل زندگی
    جزیره کیش
    پست
    723

    نقل قول: ساخت ایونت برای کنترلهایی که به صورت آرایه تعریف شدند

    سلام دوست من
    فکر می کنم نمیشه واسه کنترلهای آرایه ای ایونت درست کرد
    چرا نميشه!!
    اون مثالي كه برات گزاشتم پس چيكار كرده؟؟!!
    توي آرگومان هاي يه Event Handler شي كه با نام Sender شناخته ميشه در واقع همون كنترلي كه اين Event رو فراخواني كرده .
    يا علي

  7. #7

    نقل قول: ساخت ایونت برای کنترلهایی که به صورت آرایه تعریف شدند

    دستت درد نکنه مرسی درود فراوان بر شما باد.خودمم یه چیزایی رو یاد گرفتم . این کدو موقع ساخته شدن کنترل می نویسیم :

    txt[i].KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtkeydown);

    و برای هندل کردن هم از کد دوستمون استفاده می کنیم یعنی :

    privatevoid txtkeydown(object sender, EventArgs e)
    {

    //MessageBox.Show(((TextBox)sender).Text);
    ((TextBox)sender).Text = "verygood";

    }

    من ایک کارو واسه ایونت keydown تمستباکسام انجام دادم واقعا مثله اینکه جواب میده تو تست اولیه اگه مشکلی پیدا کردم دوباره می گم . راستشو بخواین کلا اصلا sender نمیدونم چیه واسه همین فکر کنم تو قسمت

    ((
    TextBox)sender).Text
    مشکل داشتم اگه میشه یه توضیحه محتصر بدین ممنون میشم

  8. #8
    VIP آواتار Sajjad.Aghapour
    تاریخ عضویت
    مهر 1386
    محل زندگی
    اهل کاشانم .. روزگارم بد نیست
    پست
    1,265

    نقل قول: ساخت ایونت برای کنترلهایی که به صورت آرایه تعریف شدند

    sender رو اگه بخوای ترجمه اش رو هم در اینجا به کار ببری یعنی فرستنده.یعنی در اصل sender همون شی ای هست که به این تابع ارسال میشه و از این جهت که هر چیزی میتونه باشه از نوع object تعریف میشه...
    اگه رویداد شما مربوط یه یک textBox هست sender در اصل همون textBox هست که با casting اون رو به هویت واقعی خودش یعنی همون TextBox میشه تبدیل کرد....
    Close your eyes, take a deep breath, click your heels three times, and say, "There's no better thing than Inversion of Control and Dependency Injection, generic specialization, the decorator pattern, chains of responsibilities, and extensible software."

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

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