c#取消选中时删除项目复选框

时间:2014-01-27 04:03:39

标签: c# .net winforms checkbox checkboxlist

当我选中复选框列表中的复选框时,checkbox.text将添加到列表框中。 但是当我取消选中该复选框时,checkbox.text将从列表框中删除。 但问题是我不知道如何从列表框中删除所选项目。

[Press here to see the picture][2]<br>

例如,当我选中checkbox1,checkbox2,checkbox3时,列表框将显示
    checkbox1     checkbox2     checkbox3

但是,当我取消选中复选框时,仍然相同 我住在这里。帮助!!

这是我的代码:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    if (checkBox1.Checked) listBox1.Items.Add(checkBox1.Text);

}

private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
    if (checkBox2.Checked) listBox1.Items.Add(checkBox2.Text);
}

private void checkBox3_CheckedChanged(object sender, EventArgs e)
{
    if (checkBox3.Checked) listBox1.Items.Add(checkBox3.Text);
}

private void checkBox4_CheckedChanged(object sender, EventArgs e)
{
    if (checkBox4.Checked) listBox1.Items.Add(checkBox4.Text);
}

6 个答案:

答案 0 :(得分:5)

if (checkBox3.Checked) 
    listBox1.Items.Add(checkBox3.Text);
else
    listBox1.Items.Remove(checkBox3.Text);

请注意,这将始终删除Text属性中的任何内容。这意味着,如果我选中此框,更改textBoxX中的文字,然后取消选中,则会删除其他项目。

答案 1 :(得分:1)

Items上的ListBox集合采用Remove方法。在您的每个CheckedChanged事件中添加其他内容并使用Remove方法。

if (checkBox4.Checked) listBox1.Items.Add(checkBox4.Text);
else listBox1.Items.Remove(checkBox4.Text);

答案 2 :(得分:1)

制作一个通用功能并致电。例如,

private void addRemove(CheckBox chk)
{
if (chk.Checked) 
    listBox1.Items.Add(chk.Text);
else
    listBox1.Items.Remove(chk.Text);
}

致电

addRemove(checkbox1); 

答案 3 :(得分:0)

调用Remove()方法。它接受一个指定要删除的项的参数。

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{

    if (checkBox1.Checked) 
        listBox1.Items.Add(checkBox1.Text);

    else
        listBox1.Items.Remove(checkBox1.Text);

}

private void checkBox2_CheckedChanged(object sender, EventArgs e)
{

    if (checkBox2.Checked) 
        listBox1.Items.Add(checkBox2.Text);

    else
        listBox1.Items.Remove(checkBox2.Text);

}

private void checkBox3_CheckedChanged(object sender, EventArgs e)
{
    if (checkBox3.Checked) 
        listBox1.Items.Add(checkBox3.Text);

    else
        listBox1.Items.Remove(checkBox3.Text);

}

private void checkBox4_CheckedChanged(object sender, EventArgs e)
{
   if (checkBox4.Checked) 
      listBox1.Items.Add(checkBox4.Text);

   else
      listBox1.Items.Remove(checkBox4.Text);

}

答案 4 :(得分:0)

如果你想要做的就是为什么不为每个复选框分配相同的事件并执行以下操作: -

CheckBox chkBox=(CheckBox)sender;
if (chkBox.Checked) 
    listBox1.Items.Add(chkBox.Text);
else
    listBox1.Items.Remove(chkBox.Text);

答案 5 :(得分:0)

你可以做一个功能

 private void checkBoxCheckedChanged(object sender, EventArgs e)
        {
            CheckBox cb = sender as CheckBox;
            if (cb != null)
                if (cb.Checked) listBox1.Items.Add(cb.Text); else listBox1.Items.Remove(cb.Text);
        }

然后将所有复选框添加为CheckedChanged事件。

相关问题