为什么combobox SelectedValue没有选择时抛出异常

时间:2014-03-04 14:20:54

标签: c#

我正在使用Windows Form Application ..其中有很多文本框和组合框这是我的数据输入表格... 当我将数据插入数据库时​​,我得到了以下异常....

   string NickName = comboBox1.SelectedValue.ToString();//object reference not set to an instance of an object

Nick Name是我的案例中的可选字段...... 我的问题是为什么combobox SelectedValued什么时候没有Seleceted抛出异常?怎么克服这个?.. 任何帮助将不胜感激。谢谢提前

2 个答案:

答案 0 :(得分:2)

  

我的问题是为什么combobox SelectedValued当没有任何选择时抛出异常?

选择nothig时comboBox1.SelectedValue会返回null,如果您致电null上的任何成员,则会抛出NullReferenceException

  

如何克服这个问题?

您可以在尝试访问其值之前检查null
您可以检查其SelectedIndex值。

解决方案:您可以使用以下任何一种方法来解决问题。

方法1:使用if-condition

string NickName = string.Empty; 
if(comboBox1.SelectedValue != null)
   NickName = comboBox1.SelectedValue.ToString(); 

方法2:使用conditional(ternary ?:) operator

string NickName = (comboBox1.SelectedValue != null) ? 
     comboBox1.SelectedValue.ToString() : string.Empty; 

方法3:使用null-coalescing ??运算符

string NickName =(string) comboBox1.SelectedValue ?? string.Empty; 

方法4 :选中SelectedIndex

string NickName = (comboBox1.SelectedIndex >= 0) ? 
     comboBox1.SelectedValue.ToString() : string.Empty; 

答案 1 :(得分:0)

因为您正在尝试转换null对象

 string NickName = comboBox1.SelectedValue == null? "":comboBox1.SelectedValue.ToString();