كيفية استخدام خطأ موفر في وقت التشغيل جنبا إلى جنب مع ربط أي عنصر التحكم إلى التحقق من صحة
-
28-09-2019 - |
سؤال
أنا في محاولة لخلق التحقق في القابل لإعادة الاستخدام الموضة.
الغرض: جعل التحقق من صحة التحكم قابلة لإعادة الاستخدام.
خطأ مزود يجب اقترانه التحكم مرت حيوي يمكن تعيين أو مسح في وقت التشغيل.
عندما المستخدم اضغط حدث OnClick ثم كل الضوابط يحصل التصديق الخاصة بها خطأ مقدمي الخدمات.
public bool IsFieldEmpty(ref TextBox txtControl, Boolean SetErrorProvider,string msgToShowOnError)
{
ErrorProvider EP = new ErrorProvider();
if (txtControl.Text == string.Empty)
{
if(SetErrorProvider==true)
EP.SetError(txtControl, msgToShowOnError);
return true;
}
else
{
if(SetErrorProvider==true)
EP.Clear();
return false;
}
}
المسألة:
في كل مرة يتم استدعاء الدالة الجديدة errorprovider كائن يحصل على خلق الذي لا تريده.كل التحكم لا ينبغي أن يكون أكثر من 1 خطأ موفر يجب أن تكون قادرة على البحث فقط مثل ما فعل في asp.net إلى البحث عن بعض السيطرة على الصفحة.
كيف يمكن أن أفعل هذا
المحلول
في معظم الحالات كنت حقا بحاجة فقط مثيل واحد من ErrorProvider على شكل.
E. g.
ErrorProvider errorProvider1 = new ErrorProvider();
أو مجرد سحب واحد من مربع الأدوات إلى النموذج.
عند استدعاء ErrorProvider ، تقدم التحكم في الرسالة,,
errorProvider1.SetError (dateTimePicker1, "HEY BAD DATE");
لمسح الخطأ...
errorProvider1.SetError (dateTimePicker1, "");
حتى واحد ErrorProvider سبيل المثال هو كل ما تحتاجه حقا في معظم الحالات.
نصائح أخرى
على PropertyOnDemand مثل هذا الوصول إلى تلك الخاصية في كل مرة u حاجة جديدة ErrorProvider
private ErrorProvider _ErrorProvider = null;
//PropertyOnDemand
private ErrorProvider ErrorProviders
{
get
{
if (_ErrorProvider == null)
{
_ErrorProvider = new ErrorProvider();
return _ErrorProvider;
}
else
return _ErrorProvider;
}
}
public bool IsFieldEmpty(ref TextBox txtControl, Boolean SetErrorProvider, string msgToShowOnError)
{
if (txtControl.Text == string.Empty)
{
if (SetErrorProvider == true)
ErrorProviders.SetError(txtControl, msgToShowOnError);
return true;
}
else
{
if (SetErrorProvider == true)
ErrorProviders.Clear();
return false;
}
}