În Windows Forms (.NET 2.0, Visual Studio 2005 SP1): Am un tastat DataSet, cu o coloană , care este de tip System.Boolean, care poate să fie nulă și care este valoarea implicită DBNull. Am Form, care conține un CheckBoxcontrol care doresc să se lege la valoarea din coloana anterioară.
- Am încercat să lega
Checkedproprietatea de a coloanei prin proiectant: it works mare, numai în cazul în care valoarea implicită pentru coloana este setat laTruesauFalse. Am încercat să lega
CheckStateproprietatea de a coloanei prin intermediul proiectantul, și atașarea propriile meleFormatșiParseevenimente stivuitoare , dar niciodată nu se vor numit: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 };Am încercat să creeze un obicei
Bindingexemplu , în codul, atașați manipulare eveniment meu și adăugați - l laCheckBoxlegările: Stivuitoare eveniment nu sunt niciodată încă se numește ...Binding b=new Binding(CheckState, _BindingSource, MyColumn, false, DataSourceUpdateMode.OnPropertyChanged, DBNull.Value);
Ca o notă: o DBNullvaloare este acceptabilă numai în cazul în care vine din DataSet(aceasta înseamnă valoarea nu a fost setată). Dar , utilizatorul ar trebui să poată să stabilească valoarea la numai Truesau Falseprin poarta CheckBox.
Pentru referință, aici este codul de formatare și parsare metode:
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;
}













