5

我正在编写一个包含一些按钮和一个组合框的表单。默认情况下禁用“确定”按钮,我希望仅在选择实际值(不是组合框的名称)后启用它。

我知道如何访问选定的值,以及如何检查是否选择了一个值——但这两个只能在表单关闭后完成(使用“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 回答