使用复选框动态添加组合框

时间:2019-02-11 20:51:40

标签: c# winforms

我正在尝试在单击复选框时添加一个组合框。

我正在使用的代码如下。就目前而言,我可以让它围绕一个已经存在的组合框移动,但是不会创建一个新的组合框。

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        // Determine the CheckState of the check box.  
        if (checkBox1.CheckState == CheckState.Checked)
        {  

            combo.Items.AddRange(new object[] {
                "Item 1",
                "Item 2",
                "Item 3",
                "Item 4",
                "item 5",
                "Item 6"});
            combo.Location = new System.Drawing.Point(19, 123);
            combo.Name = "combo";
            combo.Size = new System.Drawing.Size(121, 21);
            combo.TabIndex = 0;
            combo.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged);
            combo.BringToFront();

            this.AllowDrop = false;
        }
    }

    private void checkBox1_Click(object sender, System.EventArgs e)
    {
        switch (checkBox1.CheckState)
        {
            case CheckState.Checked:
                ComboBox combo = new ComboBox();
                Controls.Add(combo);
                break;
            case CheckState.Unchecked:

                break;
            case CheckState.Indeterminate:

                break;
        }
    }

1 个答案:

答案 0 :(得分:0)

解决的方法是意识到要将语句放入哪个功能。在[[条件下,组合框的设置(范围,位置等)将在CheckChanged功能中。它们将与if checkedgroupbox.controls.add();一起出现,以防万一它落在某物后面。

combo.BringToFront();

同时,您必须在private void checkBox1_CheckedChanged(object sender, EventArgs e) { // Determine the CheckState of the check box. if (checkBox1.CheckState == CheckState.Checked) { groupBox1.Controls.Add(combo); combo.Items.AddRange(new object[] { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6"}); combo.Location = new System.Drawing.Point(19, 123); combo.Name = "combo"; combo.Size = new System.Drawing.Size(121, 21); combo.TabIndex = 0; combo.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged); combo.BringToFront(); this.AllowDrop = false; } 函数中实例化组合框并添加它。

Click

如果您想在取消选中复选框后摆脱组合框,只需添加

    private void checkBox1_Click(object sender, System.EventArgs e)
    {
        switch (checkBox1.CheckState)
        {
            case CheckState.Checked:
                ComboBox combo = new ComboBox();
                Controls.Add(combo);
                break;
            case CheckState.Unchecked:

                break;
            case CheckState.Indeterminate:

                break;
        }
    }

进入 if (checkBox1.CheckState == CheckState.Unchecked) { groupBox1.Controls.Remove(combo); Controls.Remove(combo); combo.Items.Clear(); } 函数。 确保放入private void checkBox1_CheckedChanged(object sender, EventArgs e),否则它将把组合框的新实例范围添加到旧实例中。