前提
環境 VisualStudio2008
・データベースから値を取得して、その値をコンボボックスに表示させたいと考えています。
・コンボボックスに表示させるにあたり、Dictionary型へ変換した後に表示させます
実現したいこと
・コンボボックスにデータベースから取得した値を表示させる
・データテーブルを辞書型に変換する
発生している問題・エラーメッセージ
■メッセージ
同一のキーを含む項目が既に追加されています。
該当のソースコード
vb.net
1 ComBox.DisplayMember = "Key" 2 ComBox.ValueMember = "Value" 3 4 'コンボボックス 5 Dim dic As New Dictionary(Of String, String) 6 7 For i = 0 To DataKey.Rows.Count - 1 8 9 dic.Add(DataKey.ToString, DataValue.ToString) 10 11 Next 12 13 ComBox.DataSource = New BindingSource(dic, Nothing) 14
上記のコードで試した結果、記載しているエラーメッセージが表示されています。
データはsqlから取得出来ているのですが、dicの中にデータが入っていません。
空白""が入ってしまっている結果、エラーが生じているのだと想定しています。
どのように修正すればデータをdicに取得することが出来、
コンボボックスに値を表示させることが出来るのでしょうか。
ご教示よろしくお願いいたします。
エラーメッセージの通りキーに同じ値があります。
Dictionaryには同じキーを設定できません。
データベースから読み込んだデータはどうなっているのでしょうか?
ご指摘ありがとうございます。
データベースから読み込んだデータは以下のようになっています
DataKey リンゴ,メロン,ブドウ
DataValue 1,2,3
以上のように正しくデータ取れているのですが、
1回目にdicにデータを入れた後、dicの中身がkey,valueいずれも""となってしまっています。データは取れているけれど、dicに入っていないので代入時の私のコードの書き方に問題があるのだろうと考えています。
DataKey、DataValueとは何なのでしょうか?
DataKeyに関してはRowsがありそうなのでDataTableっぽいですが・・・
ループ内でDictionaryに追加するのではなく、追加しようとしているものをログ出力するなりしてみましょう。
DataTableの中の値の取り出し方等を理解されていないように思えます。

何を何で作っているかぐらいは書きませんか? (例: Visual Studio 2008 で Windows Forms アプリをフレームワーク .NET Framework 4.8 で作ってます)

> コンボボックスに表示させるにあたり、Dictionary型へ変換した後に表示させます
なぜですか? そうする理由は?
以下の記事は DataGridView の ComboBox に DataTable のデータを表示するものですが(ステップ 17 ~ 21)、単独の ComboBox でも同様にできると思いますけど?
DataGridView に ComboBox を表示
http://surferonwww.info/BlogEngine/post/2014/01/23/how-to-show-combobox-column-in-datagridview.aspx

質問者さん、その後無言ですが、回答したのでそれに対するフィードバックを返してください。役に立った/立たなかったぐらいは返せるのでは? 役に立たなかったならどこがダメかを書くとより期待に近い回答が出てくるかも。解決したなら解決に役立った回答にベストアンサーをつけてクローズしてください。とにかく無言で放置は NG です。
回答1件
あなたの回答
tips
プレビュー