
VB.NETのWindowsフォームにDataGridView1を配置し、次のようなデータテーブルを用意しました。
VB.NET
1Dim typeTable As New DataTable("typeTable") 2typeTable.Columns.Add("Display", GetType(String)) 3typeTable.Columns.Add("Value", GetType(Integer)) 4typeTable.Rows.Add("uint8_t", 0) 5typeTable.Rows.Add("uint16_t", 1) 6typeTable.Rows.Add("uint32_t", 2) 7typeTable.Rows.Add("uint64_t", 3)
これにより、コンボボックスのデータは0~3までの数値でテキストファイルに保存できました。
保存したテキストファイルからコンボボックスに再現しようとすると、以下のコードではデバッグ開始時に「DataGridViewの既定のエラー」ダイアログが表示され、無理に進めるとコンボボックスにValue値が入ります。
VB.NET
1rdata = srIniFile.ReadLine() 2DataGridView1.Rows(i).Cells(0).Value = rdata
ダイアログの内容は次の通りです。
DataGridViewで次の例外が発生しました:
System.FormatException: DataGridViewComboBoxCellの値が有効ではありません
この既定のダイアログを置き換えるには、DataErrorイベントをハンドルしてください。
元通りDisplay値を格納するにはどうすれば良いでしょうか。

DataGrid のタグは外してください。前のスレッドでも言いましたが無視ですか?
これも前のスレッドで言いましたが、そもそも何がしたいのかを書きましょう。DataGridView を直接操作して何らかの値を代入ということには普通何の意味もないはず。たぶん XY 問題になってます。
XY 問題とは、X という課題があって、Y という解決策を考えついて Y について質問したが(質問には X は書かないで)、Y は X の解決策とはなっておらず、回答者と質問者間で話がかみ合わず、一向に解決にならないということです。
X も書いてください。
DataGridのタグは外しました。
DataGridView1の内容はユーザーがテキストファイルにセーブでき、後日、アプリを起動した時にテキストファイルを読み込み、当時の状況を再現したいと思います。
データテーブルを引用したコンボボックスは内部的にValue値で管理しているはずなので、TypeセルにValueを代入すれば良いと考えて質問冒頭のコードを書きました。
しかしエラーダイアログによるとCellの値がおかしいということで、型変換がうまくいっていないと推測して情報を探しています。

回答2件
あなたの回答
tips
プレビュー