将组合框索引设置为-1时的nullpointer

时间:2017-06-12 10:59:27

标签: c# .net visual-studio combobox databound

我有一个组合框从数据库表中获取数据。

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

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

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

这一行本身很好用:

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

这一行本身很好用:

ComboBox.SelectedIndex = -1;

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

设置ComboBox.SelectedIndex = -1时,由于索引已更改,因此再次调用ComboBox_SelectedIndexChanged函数。

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

解决方案:

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