特定标签中的复选框

时间:2019-10-30 14:57:56

标签: c# forms checkbox label

解释起来很容易,但很复杂:

我有一个复选框,总共10个,但是有一个限制,我们只能选中10个中的5个。 假设我们在两个框中打勾,然后按验证。 我会得到一个像这样的布尔数组:

true,false,true,false,false,true,false,false,false,false

知道每个盒子都有一个值: 第一个盒子=动物 第二个盒子=大写。...

现在我要问我的问题:

我有5个标签,我希望它是5个标签,对应于复选框的值。 因此,如何使其成为5个标签都是与复选框相对应的不同值。

这是我的代码:

    bool[] categorie = new bool[10] { 
        false, true, false ,true ,false ,
        true ,false ,true, false, true };

    string[] categorieName = new string[10] {
       "Animaux", "Capitale", "Fruit", "Légume", "Pays", 
       "Prénom fille", "Prénom garçon", "Métier", "Moyen de transport", "Sport" };

所以我已经完成了bool数组,但是它会根据复选框自行完成

第二个是价值。

所以我希望我的标签是:

Capitale,Légume,付款,保利加尔孔,交通运输

谢谢您,请解释一个解决方案(循环吗?如果不知道)

1 个答案:

答案 0 :(得分:0)

让我们将CheckBox整理到一个集合中,例如数组:

 Tuple<CheckBox, Control>[] m_Categories = null;

 public MyForm() {
   // I've assumed WinForms - InitializeComponent()
   InitializeComponent();

   // CheckBox and its corresponding Label
   m_Categories = new Tuple<CheckBox, Control>[] {
     Tuple.Create(cbAnimaux, labelAnimaux),   
     Tuple.Create(cbCapitale, labelCapitale),     
     ...
     Tuple.Create(cbSport, labelSport), 
   };
 }

然后,您可以轻松更新相应的Label

 foreach (var record in m_Categories)
   record.Item2.Text = record.Item1.Checked // If CheckBox is  
     ? record.Item1.Text // checked, label gets CheckBoxes Text
     : "";               // not checked, label has an empty Text