1

ユーザーがコンボボックスから何かを選択するWinformsアプリケーションを作成しています。しかし、アプリケーションを実行すると、インデックスが -1 だったため、コンパイラは ArgumentOutOfRange 例外をスローします。

コード:

 if (comboBox1.Enabled == false || comboBox2.Enabled == true || comboBox3.Enabled == false)
        {

            int index = comboBox2.SelectedIndex;
            string t = comboBox2.Items[index].ToString();//<==EXCEPTION
            switch (t)
            {
                case "Ounzes==>Pounds":

                    break;
                case "Pounds==>Ounzes":

                    break;
                case "Tons==>Pounds":
                    break;
                case "Pounds==>Tons":
                    break;
                case "Ounzes==>Tons":
                    break;
                case "Tons==>Ounzes":
                    break;

                case "Stone==>Pound":
                    break;
                case "Pound==>Stone":
                    break;
                case "Tons==>Stone":
                    break;
                case "Stone==>Ton":
                    break;
            }
        }

コンボボックスから何かを選択したため、この例外がスローされる理由を誰か説明してください。

4

3 に答える 3

4

で項目が選択されていないようComboBoxです。ドキュメントを見てください:

現在選択されている項目のゼロから始まるインデックス。項目が選択されていない場合は、マイナス 1 (-1) の値が返されます。

これを修正する最も明白な方法は、次のように、アイテムを使用する前にアイテムが選択されていることを確認することです。

int index = comboBox2.SelectedIndex;
if (index >= 0)
{
    string t = comboBox2.Items[index].ToString();
    switch (t)
    {
        ...
    }
}
于 2013-08-10T18:12:04.430 に答える
0

最善の方法は、コードを try catch ブロックに入れて、自分で答えを見つけることです:)

于 2013-08-10T18:23:59.243 に答える