将组合框索引设置为 -1 时的空指针
nullpointer when setting combobox index to -1
我有一个从数据库中获取数据的组合框 table。
当 Selected 索引更改时,我想将选择的值发送到文本框,然后清除选择。
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
MainTextBox.Text = ComboBox.SelectedValue.ToString();
ComboBox.SelectedIndex = -1;
}
这会将数据获取到文本框并清除组合框,但也会给出空指针异常。
这一行本身工作正常:
MainTextBox.Text = ComboBox.SelectedValue.ToString();
这一行本身工作正常:
ComboBox.SelectedIndex = -1;
我该如何解决?
当您设置 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;
}
}
我有一个从数据库中获取数据的组合框 table。
当 Selected 索引更改时,我想将选择的值发送到文本框,然后清除选择。
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
MainTextBox.Text = ComboBox.SelectedValue.ToString();
ComboBox.SelectedIndex = -1;
}
这会将数据获取到文本框并清除组合框,但也会给出空指针异常。
这一行本身工作正常:
MainTextBox.Text = ComboBox.SelectedValue.ToString();
这一行本身工作正常:
ComboBox.SelectedIndex = -1;
我该如何解决?
当您设置 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;
}
}