3

VS2010 を使用して Windows フォーム アプリケーションを構築しています。ユーザーがドロップダウンから選択した値を読み取り、それに基づいて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);
        }
   }

}

4

5 に答える 5

8

例外が発生している行をまだ言っていないので、暗闇の中でのちょっとしたショットです。でも:

string gender = comboBox2.SelectedValue.ToString();

comboBox2.SelectedValuenullの可能性があります。その場合、ToString()それを呼び出そうとするとNullReferenceExceptionが発生します。試す:

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

それが問題ではない場合、例外はそのメソッドの他の呼び出し(。など)内にある可能性がありますGeneratePatientNumber

于 2012-04-05T15:43:58.517 に答える
3

コードのどこかでcomboBox2.DataSourceプロパティをデータソースに設定して.SelectedValueいる場合、値を取得します。プロパティを設定していない場合は、 null が返されます。 .DataSourceSelectedValue

null 値を取得し続けるため、データソースを設定するのではなく、VS Designer でアイテムを設定すると仮定します。その場合は、代わりに次を使用する必要があります。

comboBox2.SelectedItem.ToString()

リスト内の SelectedItem を取得します。

于 2012-04-05T18:02:26.977 に答える
0

GeneratePatientNumber以外でNullReferenceExceptionが発生することがわかる唯一の場所は

comboBox2.SelectedValue.ToString();

何も選択されていない場合は.SelectedValuenullになるため、呼び出すことはできませんToString()

于 2012-04-05T15:42:35.500 に答える
0

これが1年以上前のものであることは知っていますが、まったく同じエラーで同様のプロジェクトに取り組んでいました. 私のためにそれを修正したのは使用していた

comboBox2.SelectedText.ToString();

また

comboBox2.SelectedItem.ToString();
于 2013-11-20T18:31:38.433 に答える
0

combobox1.SelectedValue使用しないでくださいcase:

string selected = combobox1.SelectedItem.ToString();

それは私のために働いた。

于 2015-04-14T04:14:55.377 に答える