کنترل ErrorProvider

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

  خاصیت توضیح
  BlinkRate سرعت چشمک زدن آیکون ErrorProvider را مشخص می‌کند.
  BlinkStyle نحوه نمایش آیکون ErrorProvider را مشخص می‌کند. اینکه آیا این آیکون همیشه در حال چشمک زدن باشد، یا در صورت خطا نمایش داده شود و یا اصلاً نمایش داده نشود.
  ContainerControl کنترل والد، کنترل ErrorProvider را مشخص می‌کند.
  Icon آیکونی را که هنگام وقوع خطا باید نمایش داده شود را مشخص می‌کند. این آیکون زمانی نمایش داده می‌شود که برای خطا متنی مشخص کرده باشیم.
  RightToLeft برای راست به چپ کردن متن خطا به کار می‌رود.

 

  متد توضیح
  GetError() پیغام خطایی که برای کنترل مشخص کرده‌ایم را بر می‌گرداند.
  GetIconAlignment() محل قرار گیری آیکون خطا بسته به محل کنترل را بر می‌گرداند.
  GetIconPadding() فاصله آیکون خطا نسبت به کنترل والد را بر می‌گرداند.
  SetError() متن خطایی که در صورت بروز خطا قرار است به کاربر نمایش داده شود را مشخص می‌کند.
  SetIconAlignment() محل قرار گیری آیکون خطا نسبت به کنترل را مشخص می‌کند.
  SetIconPadding() فاصله بین آیکون خطا و کنترل مورد نظر را مشخص می‌کند.

 

  رویداد توضیح
  RightToLeftChanged وقتی روی می‌دهد که مقدار خاصیت RightToLeft تغییر کند.

برای آشنایی با روش کار این کنترل، یک برنامه ویندوزی مانند شکل زیر ایجاد کنید و سپس دو جعبه متن و دو کنترل ErrorProvider بر روی آن قرار دهید :
error-provider-in-c#-01
لازم است که از رویدادهای اعتبارسنجی (validating) برای هر دو جعبه متن استفاده کنیم. بر روی جعبه‌های متن یکبار کلیک کرده و سپس از پنجره Properties به قسمت رویدادها رفته و بر روی رویداد validating دو بار کلیک کنید. کد زیر را در کنترل کننده رویداد validating جعبه متن FirstName ایجاد شده بنویسید :

private void textBox1_Validating(object sender, CancelEventArgs e)
{
    if (textBox1.Text == string.Empty)
    {
        errorProvider1.SetError(textBox1, "Please Enter Name");
    }
}

در کد بالا اعلام کرده‌ایم که اگر TextBox اول خالی بود، کنترل errorProvider1 ظاهر شده و به کاربر هشدار دهد. در کد بالا ما از متد ()SetError برای این کار استفاده کرده‌ایم. این متد دو آرگومان قبول می‌کند، که آرگومان اول نام کنترلی است که errorProvider به آن می‌چسبد و آرگومان دوم پیغام هشداری است که با مکث بر روی آیکون errorProvider به شما نشان داده می‌شود. برای مشاهده عملکرد این کنترل برنامه را اجرا کرده و بدون اینکه در TextBox اول چیزی بنویسید، بر روی TextBox دوم کلیک کنید :

error-provider-in-c#-02
همانطور که در شکل بالا مشاهده می‌کنید با کلیک بر روی TextBox دوم کنترل errorProvider1 ظاهر شده و با مکث بر روی آیکون قرمز رنگ، پیام هشداری که در متد ()SetError مشخص کرده‌اید به شما نمایش داده می‌شود. برای TextBox دوم هم به روشی مشابه می‌توان کد زیر را نوشت :

private void textBox2_Validating(object sender, CancelEventArgs e)
{
    if (textBox2.Text == string.Empty)
    {
        errorProvider2.SetError(textBox2, "Please Enter Family");
    }
}

تنها تفاوت مربوط به اختصاص errorProvider2 به کنترل TextBox دوم است. حال برنامه را اجرا کرده و دو بار دکمه Tab را بزنید :
error-provider-in-c#-03
همانطور که احتمالاً تا کنون متوجه شده‌اید این کنترل دارای یک آیکون به صورت پیشفرض می‌باشد. اگر این آیکون رو دوست ندارید می‌توانید از یک آیکون دلخواه استفاده کنید. به عنوان مثال بر روی کنترل errorProvider1 کلیک کرده و سپس در در پنجره Properties بر روی خاصیت Icon مانند شکل زیر کلیک کنید :

error-provider-in-c#-06
با کلیک بر روی این خاصیت پنجره‌ای ظاهر می‌شود که از شما مسیر آیکون با پسوند ico. را می‌خواهد. آیکون را انتخاب کرده و سپس بر روی دکمه Open کلیک کنید :

error-provider-in-c#-04
حال برنامه را اجرا کرده و با کلیک بر روی دکمه Tab نتیجه را مشاهده کنید :
error-provider-in-c#-05
برای تنظیم فاصله آیکون از کنترل می‌توان از متد ()SetIconPadding به صورت زیر استفاده کرد :

errorProvider1.SetIconPadding(textBox1,20);

کد بالا، یک فاصله 20 پیکسلی بین کنترل TextBox و آیکون ایجاد می‌کند :
error-provider-in-c#-07
برای تنظیم مکان نمایش Icon هم می‌توان از متد ()SetIconAlignment استفاده کرد. این متد، دو آرگومان قبول می‌کند که اولی نام کنترل و دیگری یک نوع شمارشی است که مکان نمایش آیکون را، مشخص می‌کند :
error-provider-in-c#-09
برای مشاهده عملکرد این متد، ارتفاع دو جعبه متن را تغییر داده و کدهای زیر را برای دو errorProvider بنویسید :

errorProvider1.SetIconAlignment(textBox1, ErrorIconAlignment.TopRight);

errorProvider2.SetIconAlignment(textBox2, ErrorIconAlignment.MiddleRight);

برنامه را اجرا و با زدن دکمه Tab نتیجه را مشاهده کنید :
error-provider-in-c#-08