k5كليدهاي تركيبي صفحه كليد189

فیلتر کردن صفحه کلید و کنترل ورودی کاربران

فیلتر کردن صفحه کلید یا کنترل ورودی کاربران یکی از مهمترین عملیاتی است که در فرمهای تحت ویندوز و پروژه های بزرگ مورد استفاده قرار می گیرد. به عنوان مثال زمانی شما نیاز دارید تا کاربر فقط بتواند اعداد یا حروف را در یک کنترل TextBox وارد نماید. برای انجام این کار شما باید ورودی کاربر را محدود نمایید. در واقع با فیلتر کردن ورودی های کاربران، از ورود اطلاعات غلط توسط کاربران تا حد بسیار زیادی جلوگیری می شود. برای این منظور می بایست برای رویداد KeyPress از کنترل TextBox کد نویسی کنید. جهت انجام این کار مراحل زیر را دنبال کنید:

 

1- Visual Studio را باز نموده و یک پروژه جدید Windows Application باز کنید.

2- یک کنترل TextBox بر روی فرم قرار دهید و در پنجره Properties به قسمت رویداد ها رفته (آیکن رعد و برق زرد رنگ) و رویداد KeyPress را انتخاب نموده و بر روی این رویداد دوبار کلیک کنید.

3- با انجام این کار به بخش کد نویسی منتقل می شوید. لازم به توضیح است که در اولین مثال می خواهیم ورودی کاربر را به گونه ای کنترل کنیم که کاربر فقط بتواند اعداد را وارد نماید. کد مورد نظر بصورت زیر می باشد.

 

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
     if ((e.KeyChar < ‘0’ || e.KeyChar > ‘9’) && e.KeyChar != 8)
    {
        e.Handled = true;
        e.KeyChar = ‘’;
    }
}

 

توضیحات:

– زمانی که بر روی یک رویداد دوبار کلیک کنید متدی برای آن رویداد ایجاد می شود که به این متد اصطلاحا متد پاسخ دهنده به رویداد می گویند. این رویداد شامل دو پارامتر می باشد. پارامتر اول sender از نوع object می باشد و حاوی کنترلی است که این رویداد را فراخوانی می کند. یعنی اگر رویداد در داخل TextBox رخ دهد sender حاوی textBox1 می شود. شما می توانید توسط این پارامتر و با تبدیل نوع به کنترل مورد نظر دسترسی داشته باشید. پارامتر دوم e از جنس کلاس XEventArgs می باشد و شامل اطلاعاتی راجع به رویداد است. X در واقع نام رویداد است که در اکثر رویدادها X وجود ندارد و e از جنس خود کلاس EventArgs می باشد. در برخی موارد نیز همانند مثال فوق X برابر KeyPress شده است و همانطور که مشاهده نمودید e از جنس کلاس KeyPressEventArgs شده است.

– KeyChar یکی از همان اطلاعاتی است که راجع به  رویداد KeyPress در e ذخیره می گردد و نماینده کاراکتری است که از صفحه کلید فشرده شده است. KeyChar از نوع char است و همانطور که می دانید char می تواند مقدار عددی را که معرف کد اسکی یک کاراکتر می باشد نیز دریافت نماید.

– Handled نیز یکی دیگر از اطلاعات مربوط به رویداد KeyPress می باشد و مقدار این خصوصیت به سیستم عامل می فهماند که آیا کلید فشرده شده مدیریت شده است یا خیر.

– در مثال فوق و در دستور if بررسی کردیم که اگر کلیدی غیر از اعداد 0 تا 9 و Backspace فشرده شد، ابتدا با True کردن خصوصیت Handled به سیستم عامل فهماندیم که کلید فشرده شده توسط برنامه مدیریت شده است تا صدای «بیپ» سیستم شنیده نشود و سپس محتوای KeyChar یا کلید مورد نظر را پوچ یا null کردیم تا کلید فشرده شده در TextBox تایپ نشود.

 

حال اگر بخواهیم ورودی کاربر را محدود به حروف انگلیسی نماییم به جای کد فوق کد ذیل را می نویسیم

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if ((e.KeyChar < ‘a’ || e.KeyChar > ‘z’) && (e.KeyChar < ‘A’ || e.KeyChar > ‘Z’) && e.KeyChar != 8)
    {
        e.Handled = true;
        e.KeyChar = ‘’;
    }
}}

 

اگر بخواهیم ورودی کاربر را محدود به حروف پارسی نماییم به جای کد فوق کد ذیل را می نویسیم

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    string s = “اآبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهیةؤإأءۀ”;
    if (s.IndexOf(e.KeyChar) < 0)
    {
        e.Handled = true;
        e.KeyChar = ‘’;
    }
}

برای انجام تمامی مثال های فوق می توانید از روش دیگری به نام عبارات منظم یا Regular Expression نیز استفاده نمایید

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

سبد خرید