骨のダイスを転がそう

2009|01|02|03|04|05|06|07|10|12|
2010|01|02|03|04|05|06|07|08|09|10|11|
2011|02|03|05|06|07|08|09|10|11|12|
2012|01|02|04|05|09|10|11|12|
2013|01|02|04|
2014|11|
2015|01|04|05|
2016|06|07|08|09|11|
2017|01|02|03|04|
2018|03|

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 を使用するが、そのためだけにあるものではない。

_ 高階関数、という言葉があるけど、今まで上手い使い方の実例みたいなものが分からなっかた。それがようやく分かってきた。