Windows Forms (.NET 2.0, a Visual Studio 2005 SP1): Már egy gépelt DataSet, egy oszlop, amely a típus System.Boolean, amely lehet üres, és amely alapértelmezett érték DBNull. Van egy Form, amely egy CheckBoxkontroll, hogy szeretnék, hogy kötődik az előzetes oszlop értékét.
- Megpróbáltam kötni a
Checkedtulajdonság az oszlopra juttatják a tervező: ez remekül működik, csak akkor, ha az alapértelmezett érték az oszlop beállítása semTruevagyFalse. Megpróbáltam kötni a
CheckStatetulajdonság az oszlopra juttatják a tervező, és csatolva a sajátFormatésParseeseménykezelőkkel de soha nem kap hívják: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 };Megpróbáltam létrehozni egy egyéni
Bindingpéldául a kódot, mellékelem eseménykezelőkkel és add meg aCheckBoxkötések: az esemény rakodók még soha nem hívott ...Binding b=new Binding(CheckState, _BindingSource, MyColumn, false, DataSourceUpdateMode.OnPropertyChanged, DBNull.Value);
Mint egy megjegyzés: a DBNullérték elfogadható, ha csak bol DataSet(ez az az érték, még soha nem volt beállítva). De a felhasználó csak akkor tudja beállítani az értéket True, vagy Falsekeresztül CheckBox.
Referenciaként itt a kód az elemzési és formázási módszerek:
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;
}













