2017-06-12 81 views
0

我有一个组合框从数据库表中获取数据。当将组合框索引设置为-1时为空指针

选定索引更改时我想将选择的值发送到文本框,然后清除选择。

private void ComboBox_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    MainTextBox.Text = ComboBox.SelectedValue.ToString(); 
    ComboBox.SelectedIndex = -1; 
} 

这会将数据传送到文本框并清除组合框,但也会给出空指针异常。

这条线本身工作正常:

MainTextBox.Text = ComboBox.SelectedValue.ToString(); 

这条线本身工作正常:

ComboBox.SelectedIndex = -1; 

如何解决这个问题?

回答

3

当您设置ComboBox.SelectedIndex = -1时,ComboBox_SelectedIndexChanged函数被重新调用,因为索引已被更改。

当调用该函数时,第二次,NullReferenceException被抛出ComboBox.SelectedValueSelectedIndex等于-1设为null

解决方案:

private void ComboBox_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if(ComboBox.SelectedIndex != -1) 
    { 
     MainTextBox.Text = ComboBox.SelectedValue.ToString(); 
     ComboBox.SelectedIndex = -1; 
    } 
} 
+0

当然! 谢谢,经验教训。 –

相关问题