骨のダイスを転がそう
2009-10-07
_ [.Net] DataGridViewのデータバインド
.NetFramework 2.0 以降の DataGridView では、フォームデザイナーで「非バインド列」というものを追加して各種書式が設定できる。
では、データをバインドする列については、コード側でせっせと書式を設定しなければいけないのか?
_ ……そんなことは無かった。「非バインド列」の DataPropertyName で BindingSource の DataSource に入れる DataTable のカラム名を入れておけばバインドできる。つまり、データをバインドする列についてもデザイナで書式設定ができる。
_ なんじゃそりゃー!?
_ 同僚がこの点に見事にハマっていた。まあ、プロトタイプでいろいろテストしない方が悪いワケだが。
2009-10-31
_ [.Net] .Net Framework の delegate
delegate の役割と、その一例としてのイベント
ようやく見えてきた。
メソッドの一部の動作だけを差し替えしたいときとかに使うのか。(というか、そういう風にも使える、というモノのようだけど)
イベントハンドラへの動作の登録も、別にメソッドを作った上で登録しなければいけなくて、面倒臭かったんだけど、ラムダ式で、個別のメソッド登録が不要となった。
これで、ようやく何をやっているのか、が見えてきた。
* イベントが発生するクラスには、public event ……等としてイベントハンドラを登録する。実体は、オブジェクトと EventArgs の引数を取る delegate 。
* イベントの影響を受けるクラスで、イベント発生元のイベントハンドラに、自分のクラスのメソッドや、ラムダ式を登録して動作を定義する。
* イベントハンドラに登録するときは、"+=" を使用すれば、1つのイベントに複数の動作を登録できる。
* event の仕組み実現のために delegate を使用するが、そのためだけにあるものではない。
_ 高階関数、という言葉があるけど、今まで上手い使い方の実例みたいなものが分からなっかた。それがようやく分かってきた。