如果选择了其他组合框,如何禁用comboBox(C#)

时间:2011-10-18 20:41:51

标签: c# winforms

如果不同的组合框中包含某种文本或值,则无论如何都要禁用组合框。我尝试了几件事似乎无法让它发挥作用。

以下是示例

ComboBox

4 个答案:

答案 0 :(得分:8)

使用combobox1的SelectedValueChanged事件检查所选值。根据它禁用或启用combobox2。

private void combobox1_SelectedValueChanged(object sender, Eventargs e)
{
    if (combobox1.SelectedValue == myDisableValue)
        combobox2.Enabled = false;
    else
        combobox2.Enabled = true;
 }

答案 1 :(得分:1)

您可以处理两个组合框的SelectedValueChanged事件,如果任何组合具有您所需的值,则禁用另一个

答案 2 :(得分:0)

答案 3 :(得分:0)

类似于此的东西,只设置你想要的任何属性,或者不清除它,或者其他什么。 (测试组合不是数据绑定)

    public partial class Form1 : Form
{
    bool fireEvents = true;
    public Form1()
    {
        InitializeComponent();
    }

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (fireEvents) doCheck(sender, e);
    }

    private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (fireEvents) doCheck(sender, e);
    }

    private void doCheck(object sender, EventArgs e)
    {
        fireEvents = false; // because we don't have a way to cancel event bubbling
        if (sender == comboBox1)
        {
            comboBox2.SelectedIndex = -1;
        }
        else if (sender == comboBox2)
        {
            comboBox1.SelectedIndex = -1;
        }
        fireEvents = true;
    }

}