DataGridViewにユーザーコントロールを表示したい

  DataGridViewコントロールのセルに、ユーザーコントロールを置きたい。ユーザーコントロールにはラベルとボタンの2つのコントロールを配置。値に応じてラベルとボタンのTextプロパティの表記や、ボタンの表示/非表示とかを変えたい。ボタンを押すと、値を更新して表示が変わる。例えば0だったらラベルに「まだ」、ボタンは「確認」と表記して、ボタン押したら値が1に更新されて、ラベルが「確認済み」、ボタンは「取り消し」になる、とか。

 

http://msdn.microsoft.com/ja-jp/library/7tas5c80(v=vs.110).aspx

  http://morado106.blog106.fc2.com/blog-category-3.html

 

  この2つを参考にやってみてるのだけど、すげー難しい。基本的にはDataGridViewのカラム(DataGridViewColumn)とセル(DataGridViewCell

)のクラスをそれぞれ継承して、オリジナルのクラスを作る。オリジナルのコントロールのクラスも定義して、セルの中でそのコントロールを使うように定義。それをDataGridViewに追加すればいいみたい。ただ、セルの方はDataGridViewTextBoxCellみたいに既存の何らかのコントロール付きのを継承した方がいいみたい。

 

  セルの定義ではInitializeEditingControlとかEditTypeなどのプロパティを必要に応じてオーバーライド。オリジナルのカスタムクラスはIDataGridViewEditingControlインターフェースを実装し、EditingControlFormattedValueやGetEditingControlFormattedValueを定義していく。

 

  それぞれのプロパティやメソッドが何を意味しているのかわからないまま、見よう見まねで書いてみる。何となくわかったような気がするんだけど、詳しくはわからない。コードは長いけど、順を追って見ていけば理解できた、気がする。

 

  とりあえずユーザーコントロールは最低限のプロパティを定義して、DataGridViewの中に表示することを第一目標にやってみる。

 

  そして・・・できた・・・ようで、できてない・・・。初期表示だと、普通のセル状態で、その中に「DataGridView1.Rows(0).Cells(0).Value = 0」みたいに設定した値が出てくる。ユーザーコントロールとして作ったラベルとボタンは出てこない・・・?そのセルをダブルクリックしてみたら、出た?何これ?なんで最初から出ないの?編集モードになると初めて表示されるのか?訳がわからない・・・。