【问题标题】:c# remove items when uncheck check boxc#取消选中复选框时删除项目
【发布时间】:2014-01-27 04:03:39
【问题描述】:

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

例如,当我选中 checkbox1、checkbox2、checkbox3 时,将显示列表框
复选框1 复选框2 复选框3

但是,当我取消选中复选框时,仍然相同 我卡在这里。救命!!

这是我的代码:

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);
}

【问题讨论】:

    标签: c# .net winforms checkbox checkboxlist


    【解决方案1】:
    if (checkBox3.Checked) 
        listBox1.Items.Add(checkBox3.Text);
    else
        listBox1.Items.Remove(checkBox3.Text);
    

    请注意,这将始终删除 Text 属性中的所有内容。这意味着,如果我选中该框,更改 textBoxX 中的文本,然后取消选中,它将删除一个不同的项目。

    【讨论】:

      【解决方案2】:

      ListBox 上的 Items 集合具有 Remove 方法。在您的每个 CheckedChanged 事件中添加一个 else 并使用 Remove 方法。

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

      【讨论】:

        【解决方案3】:

        制作一个通用函数并调用。例如

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

        打电话

        addRemove(checkbox1); 
        

        【讨论】:

          【解决方案4】:

          你可以做一个功能

           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 事件添加到所有复选框中。

          【讨论】:

          • 谢谢,你拯救了我的一天。但我有一个问题。如果我有很多复选框,那么是否有任何快捷方式可以代替添加 checkBoxCheckedChanged(sender, e);在每个 checkbox_CheckedChanged 事件中?
          • 全选并添加该事件
          【解决方案5】:

          调用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);
          
          }
          

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

            • 如何将所有 checkbox_CheckedChanged 事件分配到一个事件中以便我可以轻松处理?
            • 看看dotnetperls.com/button你有这个事件是从属性窗口分配的
            • 我还是不明白你的意思。可以举个例子吗?
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-07-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-05
            • 1970-01-01
            相关资源
            最近更新 更多