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

نام تاپیک: آموزش: انتقال به کنترل بعد با زدن دکمه Enter

  1. #1
    کاربر دائمی آواتار Pioneers
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    217

    آموزش: انتقال به کنترل بعد با زدن دکمه Enter

    اگه برنامه رسمی نوشته باشید، حتما نیاز شده که در فرمهاتون با زدن دکمه Enter کیبرد، Focus به کنترل بعد منتقل بشه. انجام اینکار به چند خط کد برای هر کنترل نیاز داره و اگه قرار باشه با زدن دکمه Ctrl+Enter عکس این عمل انجام بشه، کد ها دو برابر میشه. حال اگه یه فرم ثبت اطلاعات، شامل 30 عدد کنترل باشه، کلی کد لازمه و خطایابی اون هم سخت تر میشه.

    در اینجا کدی میبینید که خود من اونو توی یه Dll گذاشتم و در برنامه هام از اون استفاده میکنم. اون هم با یک خط کد که نام تمام کنترلها رو شامل میشه:


    public void Set_Focs(string Key, KeyEventArgs e, params Control[] Ctrl)
    {
    //================================================
    if (!e.Control && e.KeyCode == Keys.Return)//حرکت به جلو
    for (int i = 0; i < Ctrl.Length; i++)
    {
    if (Ctrl[i].ContainsFocus && i != Ctrl.Length - 1)
    {
    Ctrl[i + 1].Focus(); break;
    }
    else if (Ctrl[Ctrl.Length - 1].ContainsFocus)//کنترل آخر
    {
    SendKeys.Send(Key); break;
    }
    }
    //================================================
    else if (e.Control && e.KeyCode == Keys.Return)//جرکت به عقب
    for (int i = 0; i < Ctrl.Length; i++)
    {
    if (Ctrl[i].ContainsFocus && i != 0)
    {
    Ctrl[i - 1].Focus(); break;
    }
    else if (Ctrl[0].ContainsFocus)//کنترل اول
    {
    SendKeys.Send(Key); break;
    }
    }
    }


    پارامتر اول کلیدی است که برای اجرای رویداد کلیک اولین دکمه (معمولا ثبت) بکار میره. مثلا F2 که باید دو تا براکت دو طرفش باشه.
    پارامتر دوم آرگومان ایجاد شده در رویداد Key_Down است.
    پارامتر سوم هم لیست کنترلهاست که به ترتیب مینویسیم.

    نحوه استفاده در رویداد Key_Down یا Key_Up:

    Set_Focs("{F2}", e, txtName, txtFamily, btnReg)

    همونطور که میبینید کافیه این تابع رو یکبار بنویسیم و با یک خط کد ازش استفاده کنیم.
    تذکر: این روش یه اشکال هم داره که بعدا پیگیری میکنیم.
    تذکر: اگه دکمه کلید دسترسی سریع نداشت می تونیم از Delegate استفاده کنیم تا در صورتیکه Focus در کنترل آخر بود، این دکمه اجرا گردد. در صورت نیاز میفرستم.

  2. #2
    کاربر دائمی آواتار Pioneers
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    217
    آقای silentrise، آیا از این متد استفاده کرده اید تا یک سوال بپرسم؟

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

  1. Enter در نقش کلیک !
    نوشته شده توسط m.hamidreza در بخش ASP.NET Web Forms
    پاسخ: 20
    آخرین پست: چهارشنبه 05 تیر 1392, 00:33 صبح
  2. استفاده از کلید enter بجای tab
    نوشته شده توسط visual_sadegh در بخش VB.NET
    پاسخ: 3
    آخرین پست: دوشنبه 24 دی 1386, 16:37 عصر
  3. کنترلها و کلید Enter
    نوشته شده توسط Future در بخش C#‎‎
    پاسخ: 20
    آخرین پست: سه شنبه 29 خرداد 1386, 21:39 عصر
  4. کار با دکمه enter
    نوشته شده توسط sabaab1359 در بخش C#‎‎
    پاسخ: 1
    آخرین پست: دوشنبه 28 خرداد 1386, 12:58 عصر
  5. enter
    نوشته شده توسط yaas135 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 2
    آخرین پست: دوشنبه 21 خرداد 1386, 15:18 عصر

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

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