閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

WinFormsでデータバインディング

Control.DataBindingsを使うと手軽にプロパティの連動などができるみたい。チェックボックスのチェックが付いているときだけボタンを有効にしたい時とかはこんな感じで。

button1.DataBindings.Add("Enabled", checkBox1, "Checked");

実際にはちゃんとモデル書いてやっていきましょう、となるのでしょうけど、書き捨てプログラムでもいちいちイベントハンドラ実装しなくても良いのは手軽でいいですね。

ちなみにチェックが付いていない場合に有効にしたい(フラグを反転したい)場合は以下のように書ける。まあこれもモデル作った方が良いですが…。

var binding = button1.DataBindings.Add("Enabled", checkBox1, "Checked");
binding.Format += (_, e) => e.Value = !(bool)e.Value!;
binding.Parse += (_, e) => e.Value = !(bool)e.Value!;