Databling و ErrorProvider - كيفية تقديم رسائل خطأ مخصصة؟
-
23-09-2019 - |
سؤال
نحن نستخدم BusinessObjects ، التنفيذ IDataErrorInfo
و IEditableObject
. BindingList
يتم إضافة S مع هذه الكائنات إلى Bindingsources ، وتستخدم تلك لربط UserControls و DataGrids على النماذج (WinForms). ال BindingSource
يتم تعيينه بالإضافة إلى ذلك كمصاعد بيانات إلى ErrorProvider
النموذج.
نحن نستخدم مربعات النص حاليًا لخصائص Type Int و Short. يتم التحقق من صحة داخل BusinessObjects مع التحقق المخصص ، مثل القيم Min/Max ، وما إلى ذلك ، والتي تعمل بشكل جيد ، نظرًا لأن رسائل الخطأ تشكل عمليات التحقق المخصصة لدينا تظهر بشكل جيد بجوار مربع النص.
ومع ذلك ، إذا كانت الإدخال أكبر من قيمة int (على سبيل المثال "99999999999") ، فإن Bindingsource لا يحاول حتى إدخال هذه القيمة في BusinesObject ولكن بدلاً من ذلك يعطي الخاطئة إلى errorprovider مثل "القيمة لـ int32 كانت كبيرة جدًا . ". لا نريد أن نزعج مستخدمينا بـ "int32" ولكننا نريد خاطئًا مخصصًا لذلك.
من الجيد أن يوفر Bindingsource هذه الميزة ، ولكن هل من الممكن توفير رسائل خطأ مخصصة لهذا؟
المحلول
تحتاج إلى ضبط تنسيق خاصية لخطأ لتعطيل سلوك معالجة الأخطاء.
مثله:
textBox1.DataBindings.Add("Text", bindingSource1, "IntValue", false,
System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged);