メインフォームを開いたときに呼び出されるメソッドがあります
private void populateComboBoxes()
{
SqlCeDataAdapter breakfastAdapter = new SqlCeDataAdapter("SELECT DISTINCT recipeName FROM Recipe WHERE Category = 'breakfast' ", databaseConnection);
SqlCeDataAdapter lunchAdapter = new SqlCeDataAdapter("SELECT DISTINCT recipeName FROM Recipe WHERE Category = 'lunch' ", databaseConnection);
breakfastAdapter.Fill(breakfastDS, "Recipe");
lunchAdapter.Fill(lunchDS, "Recipe");
cmbBox1.DisplayMember = "recipeName";
cmbBox1.ValueMember = "recipeName";
cmbBox1.DataSource = breakfastDS.Tables["Recipe"];
cmbBox2.DataSource = lunchDS.Tables["Recipe"];
cmbBox2.DisplayMember = "recipeName";
cmbBox2.ValueMember = "recipeName";
}
これは基本的に、SELECTステートメントに基づいて2つのコンボボックスにデータを入力します。このメソッドがヒットcmbBox1.DataSource = breakfastDS.Tables["Recipe"]
すると、実行を停止し、次のメソッドに移動します。
private void cmbBox1_SelectedIndexChanged(object sender, EventArgs e)
{
rtbPicture.Visible = false;
string qry = "";
qry = "SELECT DISTINCT ingredientName FROM Recipe WHERE recipeName = " + cmbBox1.SelectedItem.ToString();
SqlCeCommand com = new SqlCeCommand(qry, databaseConnection);
com.CommandText = qry;
rtbRecipe.Text = com.ExecuteScalar().ToString();
}
このメソッドはselectステートメントを実行し、その情報をに入れることになっていますrichtextbox
が、何らかの理由cmbBox1
で設定されていません。私の理解では、最初combobox
の方法では、前の方法で表示メンバーと値メンバーがすでに設定されていました。ただし、に到達すると、の実際の文字列の代わりにcmbBox1.SelectedItem.ToString()
戻ります。文字列の代わりになぜそれが私に与えているのかわかりません。System.Data.DataRowView
combobox
System.Data.DataRowView