stay foolish

技術者としていつまでも知識に貪欲でありたい。

Tips1 :DataGridViewのカラムを動的にボタンコントロールにする方法

現在は仕事でVB.netを使用してるので、コードサンプルはVB.netだがC#でも同じ事が出来るのでいい感じにコンバートしてもらいたい。

DataGridViewのカラムを動的に変更する。

.netのDataGridViewはデータを入れるテキストボックスだけでなく、別のコントロールも設定できる。
GUI上でDataGridViewのパラメータを変更する事が簡単に実現は出来るのだが、今回はDBから取得した値を設定するので、DataSourceにDataTableを設定した後に動的に変更する手段を記載する。

dgvMasterListがDataGridViewのオブジェクト、dtTargetはDataTableのオブジェクトとなっている。


gist8402e9da9092cfcb43b9c732c7754c48

解説

あまり丁寧なソースとは言えないがご了承いただきたい。
1行目から3行目まではDataGridViewに貼り付けるボタンコントロールを生成している。
既存のカラムのパラメータを変更する事で実現できないかと調べたのだが不可能だった。

4行目で作成ていたボタンコントロールを追加している。
5行目ではデータベースから取得したDatatableのオブジェクトをバインドしている。
この状況は1カラム目はボタンコントロールで2カラム以降は、データビューとなっている。

7行目から13行目で実際にボタンコントロールへの置き換えを行なっている。
厳密にはボタンコントロールに動的に追加して、Datatableの値を設定する事でボタンコントロールに置き換えた風にしている。

今回はデータビューの1カラム目がID、2カラム目が枝番となってる想定で、2つの文字を結合して、ボタンコントロールに設定する
文字としている。

この後の処理で、DataTableの1、2カラム目のVisibleにFalseを設定して隠している。