DOBON.NET DOBON.NETプログラミング掲示板過去ログ

データグリッドビューに変数の文字列を表示

環境/言語:[VB2008]
分類:[.NET]

いつもお世話になっています。

データグリッドビューのセルに文字列(変数に格納されている)を表示したい
のですが、調べたのですがよくわかりませんでした。
申し訳ありませんがご教示お願いします。
フォームにDataGridViewが貼り付けられているとして、

Dim val1 As String = "Test1"
Dim val2 As String = "Test2"

DataGridView1.Columns.Add("Column1", "Header1")
DataGridView1.Columns.Add("Column2", "Header2")

DataGridView1.Rows.Add(Val1, val2)
返信ありがとうございます。
Dim b As String = Test.Check(0)
Dim c As String = Test.Name(0)
Dim columnExe As New DataGridViewCheckBoxColumn

dgvExeMain.Columns.Insert(0, columnExe)
dgvExeMain.Columns(0).Width = 32

dgvExeMain.Columns.Add("チェック","名前") ←表示する列のヘッダ名でしょうか?
dgvExeMain.Rows.Add(b, c)

このようにしたところ例外エラーとなりました。
申し訳ありませんが何が問題かお願いします。

■No25918に返信(ainaxさんの記事)
> フォームにDataGridViewが貼り付けられているとして、
>
> Dim val1 As String = "Test1"
> Dim val2 As String = "Test2"
>
> DataGridView1.Columns.Add("Column1", "Header1")
> DataGridView1.Columns.Add("Column2", "Header2")
>
> DataGridView1.Rows.Add(Val1, val2)
> dgvExeMain.Columns.Add("チェック","名前") ←表示する列のヘッダ名でしょうか?
Columns.Addは列を作成しています。

> dgvExeMain.Rows.Add(b, c)
Rows.Addでは、作成されている列毎に、設定する値を渡しています。・・・が、

> Dim columnExe As New DataGridViewCheckBoxColumn
どうやら、チェックボックス列に文字列を表示したいようですが、
通常チェックボックス列には文字列を表示できないので
新たに文字列表示用の列を設けて、その列に文字列を表示した方が簡単かと思います。

Dim columnExe As New DataGridViewCheckBoxColumn ' チェックボックス列
Dim columnText As New DataGridViewTextBoxColumn ' テキストボックス列

' 上の2つの列を追加
DataGridView1.Columns.AddRange(New DataGridViewColumn() {columnExe, columnText})

' チェックボックス列にチェックを入れて、テキストボックス列にTest1と表示される行を追加
DataGridView1.Rows.Add(True, "Test1")


どうしても、チェックボックス列に文字列を表示したければ、DataGridViewCheckBoxColumnを継承した
新たなクラスを作り、オーナードローか何かで自力で文字列を描画する必要が
あったかと思います。結構面倒だった気がします。
チェックボックスの列を最後に挿入することで表示されるようになりました。
しかし、今回フォームが2つありメインフォームで項目を選択し選ばれたものを
子画面のデータグリッドビューに表示しているのですが、子画面を閉じ再度
データグリッドビューに表示すると例外エラーが発生しました。
子画面を閉じる時にデータグリッドビューをクリアしてあげないといけないので
しょうか?
そうであれば、その方法をご教示頂ければと思います。
よろしくお願いします。

■No25920に返信(ainaxさんの記事)
>>dgvExeMain.Columns.Add("チェック","名前") ←表示する列のヘッダ名でしょうか?
> Columns.Addは列を作成しています。
>
>>dgvExeMain.Rows.Add(b, c)
> Rows.Addでは、作成されている列毎に、設定する値を渡しています。・・・が、
>
>>Dim columnExe As New DataGridViewCheckBoxColumn
> どうやら、チェックボックス列に文字列を表示したいようですが、
> 通常チェックボックス列には文字列を表示できないので
> 新たに文字列表示用の列を設けて、その列に文字列を表示した方が簡単かと思います。
>
> Dim columnExe As New DataGridViewCheckBoxColumn ' チェックボックス列
> Dim columnText As New DataGridViewTextBoxColumn ' テキストボックス列
>
> ' 上の2つの列を追加
> DataGridView1.Columns.AddRange(New DataGridViewColumn() {columnExe, columnText})
>
> ' チェックボックス列にチェックを入れて、テキストボックス列にTest1と表示される行を追加
> DataGridView1.Rows.Add(True, "Test1")
>
>
> どうしても、チェックボックス列に文字列を表示したければ、DataGridViewCheckBoxColumnを継承した
> 新たなクラスを作り、オーナードローか何かで自力で文字列を描画する必要が
> あったかと思います。結構面倒だった気がします。
■No25921に返信(たくさんの記事)

どんなコードなのか誰も判らないから答えようがない。

せめてどんな例外エラーなのか書くべき。

何故例外エラーが発生するかはステップ実行していけば判るはず。
「たく」さんのご投稿を拝見させていただくと、「書き込みのルールについて」をお読みいただいているのかなという気がしましたので、書き込みをさせていただきます。

「書き込みのルールについて」では、「具体的なコードや、エラー内容が省略された質問」をルール違反としています。ご確認いただけますように、お願いいたします。

また、今までの「たく」さんのご質問を拝見しますと、調べれば簡単に解決できるのではないかと思われるものもあります。もし調べても分からなかったということでしたら、どのようにお調べになったのかも記述してください。そうしていただければ、調べ方のアドバイスもできるかもしれません。

以上ご協力をお願いいたします。

書き込みのルールについて
http://dobon.net/vb/bbs/index.html

DOBON.NET | プログラミング道 | プログラミング掲示板