5

いくつかのボタンとコンボ ボックスを含むフォームを作成しています。[OK] ボタンはデフォルトで無効になっています。実際の値 (コンボ ボックスの名前ではない) が選択された後にのみ有効にしたいと考えています。

選択した値にアクセスする方法と、値が選択されているかどうかを確認する方法を知っていますが、これら2つはフォームを閉じた後にのみ実行できます(「x」または「ok」ボタンを使用 - 無効になっています) .

何か案は?

ありがとう。

4

3 に答える 3

8

おそらくこのように:

    private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (comboBox.SelectedIndex > -1)
        {
            buttonOK.Enabled = true;
        }
    }

デフォルトでは、コンボボックスで選択されたインデックスは-1(コンボボックスの名前。別のインデックスを選択した後は再選択できません)であるため、-1でないことを確認すると、値が選択されていることがわかります。

ただし、別の方法、および私が使用する方法は、常に値を選択する場合は、DropDownStyleプロパティを使用してをに設定することDropDownListです。このように、インデックス0がデフォルトで選択され、ユーザーはリストからアイテムのみを選択でき、それ以外は選択できません。

于 2013-01-14T16:20:50.540 に答える
0

コンボボックスの選択したインデックス変更イベントを使用できます

これを InitializeComboBox クラスに追加します

this.ComboBox1.SelectedIndexChanged += 
            new System.EventHandler(ComboBox1_SelectedIndexChanged);

次に、選択したインデックス変更イベントで、コンボボックスが選択されているかどうかを確認できます

private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
   ComboBox cbx= (ComboBox) sender;
   Button1.Enabled = !string.IsNullOrEmpty(cbx.SelectedItem.ToString());
}
于 2013-01-14T16:17:31.390 に答える
0
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (comboBox1.SelectedIndex == -1)
            button1.Enabled = false;
        else
            button1.Enabled = true;

        //or
        //button1.Enabled = comboBox1.SelectedIndex == -1;
    }
于 2013-01-14T16:30:18.303 に答える