Windowsフォーム(.NET 2.0、Visual Studio 2005 SP1):タイプがであり、タイプがSystem.Boolean
であり、nullableで、デフォルト値はDBNull
です。私はForm
を持っています。これは、先の列の値にバインドするコントロールCheckBox
を含んでいます。CheckBoxをNULL入力可能なbool型DbColumnにバインドする方法はありますか?
- 私はデザイナーを経て、列に
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
(値が設定されていないことを意味します)からの場合に限り受け入れられます。ただし、ユーザはまたはFalse
に値を設定することができるのはCheckBox
です。 、私が知っているeasist方法
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;
}
**私の答えの終わりまで**の情報が追加されました。 –