c#combobox.SelectIndexChanged在将数据加载到数据库后出现异常
在填充数据库后,我对事件SelectIndexchange有问题。组合框正在FORMLOAD事件中填充c#combobox.SelectIndexChanged在将数据加载到数据库后出现异常,c#,combobox,selectedindexchanged,C#,Combobox,Selectedindexchanged,在填充数据库后,我对事件SelectIndexchange有问题。组合框正在FORMLOAD事件中填充 QueryAssist queryAssist = new QueryAssist(); DataTable dataTable = new DataTable(); dataTable = queryAssist.runQuery(_query); Dictionary<int, string> comboSource = new Dictionary<int, stri
QueryAssist queryAssist = new QueryAssist();
DataTable dataTable = new DataTable();
dataTable = queryAssist.runQuery(_query);
Dictionary<int, string> comboSource = new Dictionary<int, string>();
comboSource.Add(-1, "Select");
foreach (DataRow dr in dataTable.Rows)
{
comboSource.Add((int)dr.ItemArray[0], (string)dr.ItemArray[1]);
}
cmbDistaccamento.DataSource = new BindingSource(comboSource, null);
cmbDistaccamento.DisplayMember = "value";
cmbDistaccamento.ValueMember = "key";
消息框显示2
提出了一个例外。
我认为是因为'cmbDistaccamento'在获取字符串之前获取不同的值
我需要分配给组合框的“键”值,该组合框使用SelectIndexChanged进行选择
我尝试使用beginUpdate()和endUpdate()方法,但不起作用
如何解决这个问题
对不起,英语不好毫无例外,很难说 顺便说一下,关注这一行,我发现可能会出现两个问题:
Int32.Parse(cmbDistaccamento.SelectedValue.ToString())
... :(告诉我们引发了什么异常以及发生在哪一行。解决错误的第一步是读取错误消息。异常消息:格式字符串不正确。确定异常……。但问题是在事件SelectedIndexChanged之后读取值。我需要“键”分配给使用SelectIndexChanged进行选择的组合框的值。但是SelectIndexChanged会使用from load运行twince!我还没有测试,但是您应该在设置DisplayMember和ValueMember之后设置数据源。
Int32.Parse(cmbDistaccamento.SelectedValue.ToString())
private void frmInserisciCollaboratore_Load(object sender, EventArgs e)
{
//cmbDistaccamento.BeginUpdate();
QueryAssist queryAssist = new QueryAssist();
DataTable dataTable = new DataTable();
dataTable = queryAssist.runQuery("SELECT DISTACCAMENTO.ID_Distaccamento, DISTACCAMENTO.Indirizzo FROM DISTACCAMENTO");
Dictionary<int, string> comboSource = new Dictionary<int, string>();
comboSource.Add(-1, "Select");
foreach (DataRow dr in dataTable.Rows)
{
comboSource.Add((int)dr.ItemArray[0], (string)dr.ItemArray[1]);
}
cmbDistaccamento.DisplayMember = "value";
cmbDistaccamento.ValueMember = "key";
cmbDistaccamento.DataSource = new BindingSource(comboSource, null);
//cmbDistaccamento.EndUpdate();
}
private int i = 0;
private void cmbDistaccamento_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
i += 1;
MessageBox.Show("print iteration i : " +i.ToString());
_cmbDistaccamentoResult = Int32.Parse(cmbDistaccamento.SelectedValue.ToString());
MessageBox.Show(_cmbDistaccamentoResult.ToString());
//Convert.ToInt32((cmbDistaccamento.SelectedValue.ToString()));
}
catch (Exception ex)
{
MessageBox.Show("Impossibile convertire il valore(value) combobox da string a int \r\n" + ex.Message);
}
}