如何在选择当前组合框中的值时使另一个组合框可见

本文关键字:组合 另一个 选择 | 更新日期: 2023-09-27 18:15:35

我有一个combobox(CB1),它包含像1,2,3这样的项目,我想在选择值3 from CB1时创建另一个combobox (CB2) visible。我应该使用哪个属性。我正在开发一个基于windows的应用程序,我使用c#作为语言背后的代码。举个例子可以很好地解决这个问题。组合框CBFormat包含如下项目列表:

var allWiegandFormat = WiegandConfigManager.RetrieveAllWiegandFormats();
            var allWiegandList = new List<IWiegand>(allWiegandFormat);
            CBFormat.Items.Add(allWiegandList[0].Id);
            CBFormat.Items.Add(allWiegandList[3].Id);
            CBFormat.Items.Add(allWiegandList[4].Id);
            CBFormat.Items.Add(allWiegandList[5].Id);
            CBProxCardMode.Items.Add(ProxCardMode.Three);
            CBProxCardMode.Items.Add(ProxCardMode.Five);

现在我想显示当我从CBFormat组合框中选择第二项时CBPorxCardMode的组合框

如何在选择当前组合框中的值时使另一个组合框可见

试试这个

Private void CB1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    Combobox CB = (ComboBox) sender;
    if(CB.SelectedIndex != -1)
    {
        int x = Convert.ToInt32(CB.Text)
        if(x == 3)
        {
          CB2.Visible = True;
        }
    }
}

使用SelectionChangeCommitted事件并订阅CB1:

// In form load or form initialization
cb1.SelectionChangeCommitted += ComboBoxSelectionChangeCommitted;
// Event
private void ComboBoxSelectionChangeCommitted(object sender, EventArgs e)
{
    cb2.Visible = cb1.SelectedItem != null && cb1.Text == "3";
}

如果是Winforms,您可以使用这样的内容

    private void Form1_Load(object sender, EventArgs e)
    {
            comboBox1.Items.Add(1);
            comboBox1.Items.Add(2);
            comboBox1.Items.Add(3);
            comboBox2.Visible = false;
    }
    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (comboBox1.SelectedItem.ToString() == "3")
        {
            comboBox2.Visible = true;
        }
        else
        {
            comboBox2.Visible = false;
        }
    }

从CB2的Visible属性设置为False开始,并通过WinForms设计器在CB1上为SelectedIndexChanged添加一个事件处理程序代码

private void ComboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    ComboBox comboBox = (ComboBox) sender;
    if(comboBox.SelectedItem != null)
    {
        int id = Convert.ToInt32(comboBox.SelectedItem)
        cbo2.Visible = (id == 3)
    }
}

这是假设你在第一个组合中添加的ID是一个整数值。
还要记住,即使以编程方式更改SelectedItem,也会调用SelectedIndexChanged事件,而不仅仅是在用户更改值时调用。此外,如果用户再次更改选择,使其远离ID==3,该方法将再次设置Cbo2不可见