必要な情報:Visual StudioおよびC#でWindowsフォームを使用しています。ComboBoxインデックスが変更されました
私は5つのコモボボックスを持っています。これは、SQLでデータベースに用意されている部品で構成されています。コーディングの一環として、DataTableを使用し、そのDataTableにcomboBoxのDataSourceを設定します。
私のSQLクエリでこの同じDataTableに、私はリストの部品のコストを記載しました。私がしたいのは、ドロップダウンリストから選択した部分だけです。関連する価格は、その横のテキストボックスに表示する必要があります。
私はこのためにcomboBox1_SelectedIndexChanged
を使用しようとしていますが、私はに実行し、問題が、すぐにフォームの初期ロード、それは屈折率変化としてピックアップしcomboBox1_SelectedIndexChanged
がしたいと考えていますしながら、DataSource
がDataTable
に設定されますようです走るしかし、現時点では、SelectedIndex
の値はnullです。まだロードされているため、例外キャストエラーが発生しています。
どうすれば対処できますか?
DataTable SparePart = new DataTable()
は、 "public"として利用できるように関数の外で宣言され、comboBox1_SelectedIndexChanged
がアクセスできるようになりました。
その後、私はcomboBox
を移入するには、このコードを持っている:
//Read Status info from DB
SqlDataAdapter SparePartReader = new SqlDataAdapter(SQLSparePartDropbox);
SparePartReader.Fill(SparePart);
comboBoxFinJCSpares1.DataSource = SparePart;
comboBoxFinJCSpares1.DisplayMember = "DisplayMember";
comboBoxFinJCSpares1.ValueMember = "PartID";
//Set Combox1 affiliated Cost value to cost textbox
int ComBo1PartID = (int)comboBoxFinJCSpares1.SelectedValue;
string CostPrice = (from DataRow dr in SparePart.Rows
where (int)dr["PartID"] == ComBo1PartID
select (string)dr["PartCost"]).FirstOrDefault();
textBoxFinJCCost1.Text = CostPrice.ToString();
をしてから、私はcomboBoxFinJCSpares1_SelectedIndexChanged
のためにこれを持っている:
//Set Combox1 affiliated Cost value to cost textbox
int ComBo1PartID = (int)comboBoxFinJCSpares1.SelectedValue;
string CostPrice = (from DataRow dr in SparePart.Rows
where (int)dr["PartID"] == ComBo1PartID
select (string)dr["PartCost"]).FirstOrDefault();
textBoxFinJCCost1.Text = CostPrice.ToString();
if(comboBoxFinJCSpares1.SelectedValue == null)を返します。内部comboBoxFinJCSpares1_SelectedIndexChanged? – Martheen
SelectedChangeCommittedを使用すると役に立ちますか?https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectionchangecommitted(v=vs.110).aspx –
ありがとうございますオプション。 – ExpressDude