質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

2157閲覧

[VB.NET] DataGridViewのコンボボックスに文字列を格納したい

tyro

総合スコア16

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2022/12/20 04:29

編集2022/12/20 05:56

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値を格納するにはどうすれば良いでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/12/20 05:34

DataGrid のタグは外してください。前のスレッドでも言いましたが無視ですか? これも前のスレッドで言いましたが、そもそも何がしたいのかを書きましょう。DataGridView を直接操作して何らかの値を代入ということには普通何の意味もないはず。たぶん XY 問題になってます。 XY 問題とは、X という課題があって、Y という解決策を考えついて Y について質問したが(質問には X は書かないで)、Y は X の解決策とはなっておらず、回答者と質問者間で話がかみ合わず、一向に解決にならないということです。 X も書いてください。
tyro

2022/12/20 06:11

DataGridのタグは外しました。 DataGridView1の内容はユーザーがテキストファイルにセーブでき、後日、アプリを起動した時にテキストファイルを読み込み、当時の状況を再現したいと思います。 データテーブルを引用したコンボボックスは内部的にValue値で管理しているはずなので、TypeセルにValueを代入すれば良いと考えて質問冒頭のコードを書きました。 しかしエラーダイアログによるとCellの値がおかしいということで、型変換がうまくいっていないと推測して情報を探しています。
guest

回答2

0

DataGridView1の内容はユーザーがテキストファイルにセーブでき、後日、アプリを起動した時にテキストファイルを読み込み、当時の状況を再現したいと思います。

その目的に ComboBox がどうつながるのか分かりませんが・・・

データソースに CSV ファイル(CSV ファイルもテキストファイル)を使って、以下のような構成にすることを考えてはいかが?

CSV ⇔ DataTable ⇔ BindingSource ⇔ DataGridView

具体例は以下の記事を見てください。

CSV ファイルを DataGridView に表示
http://surferonwww.info/BlogEngine/post/2020/09/11/show-date-in-csv-file-on-datagridview.aspx

投稿2022/12/21 02:06

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tyro

2022/12/21 04:34

ありがとうございます。参考にさせていただきます。DataGridViewに定型の文字列を確実に入力させようと一部の列にコンボボックスを使用したため、型変換がうまくいかなかったものです。
退会済みユーザー

退会済みユーザー

2022/12/21 05:06

Display も Value も String 型にして両方に "uint8_t" ... を入れれば良いのでは?
guest

0

自己解決

申し訳ありません、自己解決しました。以下の通りString型をInteger型に変換し、正しく動作しました。

VB.NET

1rdata = srIniFile.ReadLine() 2DataGridView1.Rows(i).Cells(0).Value = Integer.Parse(rdata)

お騒がせしました。

投稿2022/12/20 06:38

編集2022/12/20 06:39
tyro

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問