Windows Forms (.NET 2.0, विजुअल स्टूडियो 2005 SP1) में: मैं एक टाइप किया है DataSetएक स्तंभ प्रकार है जिसके साथ, System.Booleanहै, जो व्यर्थ है और जो डिफ़ॉल्ट मान है DBNull। मैं एक है Formएक से युक्त, CheckBoxनियंत्रण है कि मैं पहले स्तंभ मान करने के लिए बाध्य करना चाहते हैं।
- मैं बाध्य करने की कोशिश की है
Checkedडिजाइनर के माध्यम से स्तंभ के लिए संपत्ति: यह काम करता है महान, स्तंभ के लिए डिफ़ॉल्ट मान या तो करने के लिए सेट है तभीTrueयाFalse। मैं बाध्य करने की कोशिश की है
CheckStateडिजाइनर के माध्यम से स्तंभ के लिए संपत्ति, और अपने ही संलग्नFormatऔरParseईवेंट हैंडलर्स लेकिन वे कभी नहीं कहा जाता हो:b.Format+=delegate(object sender, ConvertEventArgs cevent) { cevent.Value=DoFormat((CheckState)cevent.Value); // cf. end of the question }; b.Parse+=delegate(object sender, ConvertEventArgs cevent) { cevent.Value=DoParse(cevent.Value); // cf. end of the question };मैं एक कस्टम बनाने के लिए कोशिश की है
Bindingकोड में उदाहरण के लिए, मेरे ईवेंट हैंडलर्स देते हैं और में जोड़नेCheckBoxबाइंडिंग: ईवेंट हैंडलर्स अभी भी कहा जाता हो कभी नहीं कर रहे हैं ...Binding b=new Binding(CheckState, _BindingSource, MyColumn, false, DataSourceUpdateMode.OnPropertyChanged, DBNull.Value);
एक नोट के रूप में: एक DBNullमूल्य स्वीकार्य केवल जब आने से है DataSet(यह मूल्य का मतलब सेट नहीं किया गया है)। लेकिन उपयोगकर्ता केवल करने के लिए मान सेट करने के लिए सक्षम होना चाहिए Trueया Falseके माध्यम से CheckBox।
संदर्भ के लिए, पार्स करने और प्रारूपण विधि कोड है:
internal static CheckState DoParse(object value)
{
if ((value==null) || (value is DBNull))
return CheckState.Indeterminate;
bool v=Convert.ToBoolean(value);
return (v ? CheckState.Checked : CheckState.Unchecked);
}
internal static object DoFormat(CheckState value)
{
switch (value)
{
case CheckState.Checked:
return true;
case CheckState.Indeterminate:
return DBNull.Value;
case CheckState.Unchecked:
return false;
}
return null;
}













