いくつかのボタンとコンボ ボックスを含むフォームを作成しています。[OK] ボタンはデフォルトで無効になっています。実際の値 (コンボ ボックスの名前ではない) が選択された後にのみ有効にしたいと考えています。
選択した値にアクセスする方法と、値が選択されているかどうかを確認する方法を知っていますが、これら2つはフォームを閉じた後にのみ実行できます(「x」または「ok」ボタンを使用 - 無効になっています) .
何か案は?
ありがとう。
おそらくこのように:
private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox.SelectedIndex > -1)
{
buttonOK.Enabled = true;
}
}
デフォルトでは、コンボボックスで選択されたインデックスは-1(コンボボックスの名前。別のインデックスを選択した後は再選択できません)であるため、-1でないことを確認すると、値が選択されていることがわかります。
ただし、別の方法、および私が使用する方法は、常に値を選択する場合は、DropDownStyle
プロパティを使用してをに設定することDropDownList
です。このように、インデックス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());
}
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;
}