簡體   English   中英

C#取消選中時刪除項目復選框

[英]c# remove items when uncheck check box

當我選中復選框列表中的復選框時,checkbox.text將添加到列表框中。 但是,當我取消選中該復選框時,checkbox.text將從列表框中刪除。 但是問題是我不知道如何從列表框中刪除選定的項目。

[按這里查看圖片] [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);
}
if (checkBox3.Checked) 
    listBox1.Items.Add(checkBox3.Text);
else
    listBox1.Items.Remove(checkBox3.Text);

請注意,這將始終刪除Text屬性中的所有內容。 這意味着,如果我選中此框,則更改textBoxX的文本,然后取消選中它會刪除其他項。

ListBox上的Items集合具有Remove方法。 在每個CheckedChanged事件中放置一個else,然后使用Remove方法。

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

進行通用功能並調用。 例如

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

呼叫

addRemove(checkbox1); 

調用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);

}

如果這就是您想要做的,那么為什么不將相同的事件分配給每個復選框並執行以下操作:

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

你可以做一個功能

 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事件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM