2013-02-26 67 views
1

我想知道如何限制我的复选框添加到我的列表框。在用户选中复选框的时刻,它会将“Anchovies”添加到列表框中。我不希望发生的是,当用户取消选择复选框并再次选择它时,“An鱼”再次被添加到列表框(显示两个“Anchovies”)。C#窗体 - 复选框

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
     {   
       if (checkBox1.Checked) 
       { 
        listBox1.Items.Add("Anchovies"); 
        double total = Convert.ToDouble(textBox2.Text); 
        total = total + .5; 
        textBox2.Text = Convert.ToString(total); 
       }    
     } 
+0

好吧,看看如果你的列表框已经包含值... – 2013-02-26 07:44:53

+0

如果用户取消选择它不应该从你的列表框dissapear? – dutzu 2013-02-26 07:46:29

+0

注意:你可以制作一个继承自复选框的控件,该控件具有一个属性值,该属性值可以让你创建一个通用的更改后的函数,就像保存不同种类的鱼的字符串值一样(比萨饼浇头?) – Sayse 2013-02-26 07:47:59

回答

3

关键是要检查是否AnchovieslistBox1项目已经存在。

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
{   
     if (checkBox1.Checked) 
     { 
      //If the item is already there, we don't do anything. 
      if (!listBox1.Items.Contains("Anchovies")) { 
       listBox1.Items.Add("Anchovies"); 
       double total = Convert.ToDouble(textBox2.Text); 
       total = total + .5; 
       textBox2.Text = Convert.ToString(total); 
      } 
     }    
} 
3

做这种方式

if (checkBox1.Checked) 
      { 
       if(!listBox1.Items.Contains("Anchovies")) 
        listBox1.Items.Add("Anchovies"); 
       double total = Convert.ToDouble(textBox2.Text); 
       total = total + .5; 
       textBox2.Text = Convert.ToString(total); 
      }  
+0

Derp,当然......谢谢! – Quigg15405 2013-02-26 07:49:03

+0

@ Quigg15405不客气 – 2013-02-26 07:50:30

0

要解决这个问题,你需要检查你的列表框(该值,要么是已经存在与否)在其插入任何值之前。

e.g

foreach (var item in listBox1.Items) 
{ 
    if(item.ToString() != "Anchovies") 
    { 
    listBox1.Items.Add("Anchovies"); 
    } 
    // other code here. 
} 
相关问题