繁体   English   中英

在winform应用程序中读取Combobox的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM