In Windows Forms (.NET 2.0, Visual Studio 2005 SP1): Ich habe einen getippt DataSet, mit einer Säule , die Art ist System.Boolean, die NULL - Werte zulässt und der Standardwert ist DBNull. Ich habe ein Form, eine enthält CheckBoxSteuerelement , das ich auf den Stand der Spaltenwert binden möchten.
- Ich habe versucht , das zu binden
CheckedEigenschaft an die Säule über den Designer: es funktioniert super, nur dann , wenn der Standardwert für die Spalte entweder eingestellt istTrueoderFalse. Ich habe versucht , das zu binden
CheckStateEigenschaft an die Säule über den Designer, und meine eigenen BefestigungFormatundParseEvent - Handler , aber sie nie aufgerufen: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 };Ich habe versucht , eine benutzerdefinierte erstellen
BindingBeispiel im Code, meine Event - Handler anhängen und an den Add -CheckBoxBindungen: Die Event - Handler noch nie aufgerufen ...Binding b=new Binding(CheckState, _BindingSource, MyColumn, false, DataSourceUpdateMode.OnPropertyChanged, DBNull.Value);
Als Anmerkung: a DBNullist Wert nur dann akzeptabel , wenn aus Richtung der DataSet(den Wert bedeutet , nie gesetzt wurde). Aber soll der Benutzer nur in der Lage sein , den Wert auf Trueoder Falseüber die CheckBox.
Als Referenz hier ist der Code der Parsen und Formatierungsmethoden:
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;
}













