アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB2010でデータグリッドビューを使用したいのですが、
下記のコードを実行すると、
※エラー1「指定された列は DataGridView コントロールに既に属しています。」がでます。
列インデックスがいるのかなと、コードを追加してみると
※エラー2「プロパティIndexはReadOnlyです」がでました。
どう直せばよいかわかるかた教えてください。
どうぞよろしくお願いします。

変数に入っているもの
系列数=2
系列名(0)=deg
系列名(1)=V
系列名(2)=P

Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Text = "データビュー"
'初期化
Me.DataGridView1.Columns.Clear()
'列追加
Dim i, j As Long
Dim TBColumn As New DataGridViewTextBoxColumn()
For i = 0 To 系列数
TBColumn.Name = 系列名(i)
TBColumn.Index = i '←※エラー2 エラー後に追加してみた
Me.DataGridView1.Columns.Add(TBColumn) '←※エラー1
Next i
'行追加
Me.DataGridView1.RowCount = データ数
'データ追加
For j = 1 To データ数
For i = 0 To 系列数
Me.DataGridView1(系列名(i), CInt(j - 1)).Value = グラフデータ(i, j)
Next i
Next j
'列幅設定
For i = 0 To DataGridView1.Columns.Count - 1
Me.DataGridView1.Columns(i.ToString).Width = 30
Next i
End Sub
End Class

A 回答 (1件)

DataGridViewのカラムを自前で作るなら そのForループの中でインスタンスを生成しましょう



Dim TBColumn As New DataGridViewTextBoxColumn()
For i = 0 To 系列数
TBColumn.Name = 系列名(i)
TBColumn.Index = i '←※エラー2 エラー後に追加してみた
Me.DataGridView1.Columns.Add(TBColumn) '←※エラー1
Next i
では無くて
For i = 0 To 系列数
' ココで生成
Dim TBColumn As New DataGridViewTextBoxColumn()
TBColumn.Name = 系列名(i)
' Indexは カラムを生成しDataGridViewに追加してから使用するプロパティのようです
' ReadOnly属性になっているので =の右辺には記述できますが =左辺(つまり設定)は出来ません
'TBColumn.Index = i '←※エラー2 エラー後に追加してみた
Me.DataGridView1.Columns.Add(TBColumn) '←※エラー1
Next i

エラーが発生しているのであればそのエラーメッセージも質問と同時に投稿したほうがいいでしょう
    • good
    • 0
この回答へのお礼

丁寧なご回答ありがとうございます。
ばっちり解決できました。

お礼日時:2010/12/20 11:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています