我正在尝试在单击复选框时添加一个组合框。
我正在使用的代码如下。就目前而言,我可以让它围绕一个已经存在的组合框移动,但是不会创建一个新的组合框。
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;
}
}
答案 0 :(得分:0)
解决的方法是意识到要将语句放入哪个功能。在[[
条件下,组合框的设置(范围,位置等)将在CheckChanged
功能中。它们将与if checked
和groupbox.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)
,否则它将把组合框的新实例范围添加到旧实例中。