- - PR -
DataGridViewのColumnTypeを動的に設定したい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-05-16 10:20
お世話になります。
.netのDataGridViewで列のColumnTypeを動的に設定したいです。 例えば、元になる情報(テキストなど)を読み込みあるときは 1列(カラム)目がテキストボックス 2列(カラム)目がチェックボックス あるときは 1列(カラム)目がチェックボックス 2列(カラム)目がコンボボックス というようにデザイナで固定でColumnTypeを指定するのではなくコードで 設定したいのですが、 DataGridView1.Columns(i).XXXのあとに「ColumnType」のプロパティが出てきません。 コードで設定することは不可能なのでしょうか? どなたかご教授ください。 [ メッセージ編集済み 編集者: ピン 編集日時 2007-05-16 10:21 ] [ メッセージ編集済み 編集者: ピン 編集日時 2007-05-16 10:22 ] [ メッセージ編集済み 編集者: ピン 編集日時 2007-05-16 10:23 ] | ||||||||
|
投稿日時: 2007-05-16 10:47
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-05-16 10:54
DataGridViewColumnCollection.Add で追加することはできますね。
| ||||||||
|
投稿日時: 2007-05-16 12:13
KIさん
じゃんぬねっとさん 返答ありがとうございます。 DataGridViewColumnCollection.Add で追加する事は出来きましたが、項目数が変動するため その数だけインスタンスを宣言しなければならないようです。 <例>********************************************* 項目数が3つだった場合 Dim typeComboBox As New Windows.Forms.DataGridViewComboBoxColumn() Dim typeTextBox1 As New Windows.Forms.DataGridViewTextBoxColumn() Dim typeTextBox2 As New Windows.Forms.DataGridViewTextBoxColumn() ↑のように3つインスタンスを作らなければならない DataGridView1.Columns.Add(typeComboBox) DataGridView1.Columns.Add(typeTextBox1) DataGridView1.Columns.Add(typeTextBox2) *********************************************************** 理想は Dim typeComboBox As New Windows.Forms.DataGridViewComboBoxColumn() Dim typeTextBox As New Windows.Forms.DataGridViewTextBoxColumn() ・ ・ ・ ↑型は一種類ずつ宣言 DataGridView1.Columns.Add(typeComboBox) ※ DataGridView1.Columns.Add(typeTextBox) ※ DataGridView1.Columns.Add(typeTextBox) ※ 実際の※部分はループ処理 という風にしたいのですが、これは無理ですよね・・・。 | ||||||||
|
投稿日時: 2007-05-16 13:06
もちろんその通りですし、それが普通だと思います。 逆に
これができたと仮定しての話ですが、こっちの方が違和感ありませんか? 同じ DataGridViewTextBoxColumn でも、2つの列は全く別物ですから、 別のインスタンスにすべきと思います。 | ||||||||
|
投稿日時: 2007-05-16 15:08
ありがとうございます。
以下のようにしました。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ Dim ColmunType() As Windows.Forms.DataGridViewColumn ReDim ColmunType(n) ←nはカラムの数 For i As Integer = 0 To n Select Case wk_type_text(i) ←型が入っているワーク Case "text" ColmunType(i) = New Windows.Forms.DataGridViewTextBoxColumn Case "combo" ColmunType(i) = New Windows.Forms.DataGridViewComboBoxColumn Case "check" ColmunType(i) = New Windows.Forms.DataGridViewCheckBoxColumn End Select 'タイプを設定 DataGridView1.Columns.Add(ColmunType(i)) Next ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ またの時はお願いいたします。。助かりました。 | ||||||||
|
投稿日時: 2007-05-16 15:48
本題とは関係のない話になりますが、
コードで気になった点を1つだけ指摘しておきます。 配列変数 ColmunType は、ワーク変数として使っているだけでしたら 配列にする必要はありません。
| ||||||||
|
投稿日時: 2007-05-16 17:44
はい。了解しました。ありがとうございます。 |