[英]Read value from Combobox in winform application
我正在使用 VS2010 构建一个 Windows forms 应用程序。 我想读取用户从下拉列表ComboBox
中选择的值,并基于该值生成patientNo
。 但是当我运行应用程序时,我得到一个NullReferenceException
。
这是我的代码:
private void button1_Click(object sender, EventArgs e)
{
string patientNumber;
string gender = comboBox2.SelectedValue.ToString();
if (gender != null)
{
if (gender == "Female")
{
var generator = new PatientNumberGenerator();
patientNumber = generator.GeneratePatientNumber(Gender.Female);
const string message = "patientNumber";
const string caption = "Testing PatientNumber class";
var result = MessageBox.Show(message, caption,
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
}
else if (gender == "Male")
{
var generator = new PatientNumberGenerator();
patientNumber = generator.GeneratePatientNumber(Gender.Male);
const string message = "patientNumber";
const string caption = "Testing PatientNumber class";
var result = MessageBox.Show(message, caption,
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
}
}
}
您还没有说异常发生在哪一行,所以这有点瞎猜。 然而:
string gender = comboBox2.SelectedValue.ToString();
comboBox2.SelectedValue
可能是 null,在这种情况下尝试对其调用ToString()
会导致 NullReferenceException。 尝试:
if (comboBox2.SelectedValue == null)
{
return;
}
string gender = comboBox2.SelectedValue.ToString();
//[etc…]
如果这不是您的问题,则异常可能在该方法的其他调用中,例如GeneratePatientNumber
。
如果您在代码中的某处将comboBox2.DataSource
属性设置为某个数据源,则.SelectedValue
将检索一个值。 如果您没有设置.DataSource
属性,则SelectedValue
将返回 null。
我假设因为您不断获得 null 值,所以您没有设置数据源,而是在 VS 设计器中设置项目。 如果是这种情况,您应该改为使用:
comboBox2.SelectedItem.ToString()
检索列表中的 SelectedItem。
除了在 GeneratePatientNumber 中,我唯一能看到你会得到 NullReferenceException 的地方是
comboBox2.SelectedValue.ToString();
如果未选择任何内容,则.SelectedValue
将为 null,因此不能对其调用ToString()
。
我知道这已经有一年多了,但我正在做一个类似的项目,但出现了完全相同的错误。 为我修复的是使用
comboBox2.SelectedText.ToString();
要么
comboBox2.SelectedItem.ToString();
不要使用combobox1.SelectedValue
case
:
string selected = combobox1.SelectedItem.ToString();
它对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.