質問: こんばんは。 日付、一言というカラムを持つテーブルを持つデータベースを作ったので、それをVBのフォームで表示させようとしています。 --- 日付ラベル: [コンボボックス] 一言ラベル: [コンボボックス] ---------------- というふうにデザインしたのですが、 上のコンボボックスから日付を選択すると、その日付に対応する一言が自動で下のコンボボックスに表示できるようにしたいです。 今、同じテーブルの日付データと一言データからドラッグしてデータバインドをしていますが、うまく対応した表示になってくれません。 そもそもコンボボックスのデータバインドの4項目の意味がよくわからず、最初は対応した表示をしてくれるのですが何回も選択していると勝手に中身が書き換えられたりしてなおせませんでした。 質問は、データバインドの問題なのかソースの問題なのかということですが、 もしデータバインドの問題でしたら、 ・データソース ・表示メンバー ・値メンバー ・選択された値 をどのようにいじればお互いに対応するデータが表示できるのか教えてください(o_ _)o))
回答: > > 上のコンボボックスから日付を選択すると、その日付に対応する一言が自動で下のコンボボックスに表示できるようにしたいです > > > なにも難しく考えなくても、思っている通りコードを書けばいいです > > 上のコンボボックスから日付を選択すると > > > →上のコンボボックス(仮にComboBox日付とでもしましょう)から日付を選択すると=選択されている値が変わったら ``` Private Sub ComboBox日付_SelectedValueChanged(sender As Object, e As EventArgs) Handles ComboBox日付.SelectedValueChanged 'やりたいことを書く End Sub ``` > > その日付に対応する一言が自動で下のコンボボックスに表示 > > > →その日付に対応する一言が自動で下のコンボボックス(仮にComboBox一言とでもしましょう)に表示 ``` 'ComboBox日付で選択された値(日付)を取る Dim cb = DirectCast(sender, ComboBox) Dim 日付 = cb.SelectedItem 'その値に対応する一言を取ってくる '→日付を元にDBに値を問い合わせる '問い合わせた結果(仮に一言とする)でComboBox一言の選択を変更する Dim 一言 = "踏み出せば、その一足が道となる。:アントニオ猪木" ComboBox一言.SelectedText = 一言 ``` ComboBox一言の選択を変更する時に * SelectedIndex * SelectedItem * SelectedText * SelectedValue のどれを使うのか?はComboBox一言の選択肢をどう設定したのかによります 例えば * ComboBox日付とComboBox一言に同じものをバインドしてる のなら、 * 選択値を変えた方のSelectedIndexを他方のSelectedIndexに設定する と対応した値が表示されるはずといった具合です ※バインドしているコレクションの中で互いに値が連携しているはずなので あと聞かれていたのは * データソース:ComboBoxにバインドして表示させる値の塊(なんらかのコレクションオブジェクト) * 表示メンバー:DataSourceで指定されたコレクションのどの値を表示に使うか(String値:例えばバインドしたのがDBならカラム名) * 値メンバー:DataSourceで指定されたコレクションのどの値を選択値とするか(String値:例えばバインドしたのがDBならカラム名) * 選択された値:ComboBoxで選択された(選択する)ValueMemberに含まれる値 ということなので、やりたいことに合わせて設定してください まずコントロール(ここではComboBoxですが)がどういう機能を持っていて、どう書けばどう動くのかを考えるようにした方がいいです