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

kom*_*mbo 2 c# nullreferenceexception winforms

我正在使用VS2010构建Windows窗体应用程序.我想读取用户从下拉列表中选择的值ComboBoxpatientNo基于此生成.但是当我运行应用程序时,我得到了一个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);
        }
   }
Run Code Online (Sandbox Code Playgroud)

}

rav*_*ned 5

你还没有说过发生异常的那一行,所以在黑暗中它是一个镜头.然而:

string gender = comboBox2.SelectedValue.ToString();
Run Code Online (Sandbox Code Playgroud)

comboBox2.SelectedValue可能为null,在这种情况下尝试调用ToString()它将导致NullReferenceException.尝试:

if (comboBox2.SelectedValue == null)
{
    return;
}
string gender = comboBox2.SelectedValue.ToString();
//[etc…]
Run Code Online (Sandbox Code Playgroud)

如果这不是您的问题,则异常可能在该方法的其他调用中,例如GeneratePatientNumber.