كيفية استخدام خطأ موفر في وقت التشغيل جنبا إلى جنب مع ربط أي عنصر التحكم إلى التحقق من صحة

StackOverflow https://stackoverflow.com/questions/2672708

سؤال

أنا في محاولة لخلق التحقق في القابل لإعادة الاستخدام الموضة.

الغرض: جعل التحقق من صحة التحكم قابلة لإعادة الاستخدام.

خطأ مزود يجب اقترانه التحكم مرت حيوي يمكن تعيين أو مسح في وقت التشغيل.

عندما المستخدم اضغط حدث 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;
        }
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top