VB.NETなど書いて餅代になるかしら

仕事が決まるまで、とアルバイト感覚で.NETなどに手を出してみた。どうも目的を達すれば勝手にコード書いていいみたいで精神的には楽チン。


本日はDataGridViewのComboBoxColumnで動的にリストを切り替えるのにはどうしたらよいのか、と丸一日悩んだ。
結局、

  1. DataGridViewComboBoxColumnから連なるユーティリティクラスを派生して、
  2. EdtingControl用のクラスのOnEnter/OnLeaveメソッドをオーバーライドしてこの間だけDataSourceを動的リスト用のDataViewに差し替えて、
  3. このメソッドからComboBoxColumnに付け加えたOnEnter/OnLeaveイベントを呼ぶようにして、
  4. FormでComboBoxColumnをDataGridViewに追加するときに、Columnにイベントハンドラを付け加えて、
  5. そのイベントハンドラでComboBoxEditngControlのDataSourceに設定しておいたDataViewのRowFilterを弄くる。

という面倒くさい解決しか思いつかんかった・・・ColumnがDataGridView内部でCloneされてて、イベントハンドラを一緒にコピーさせるためにリフレクションまで登場。「これコメントいっぱい付けとかないと意味不明」というコードになってがっくり。コーディングの感が鈍ったかなあ。