随机检查checklistbox中的项目

时间:2018-05-07 21:40:17

标签: c#

我有一个checklistbox,我想随机检查文本框中的一定数量的项目(CheckAmount.Text) - 即如果用户输入60%(0.60),我想要检查列表框中60%的项目被检查。这有可能甚至关闭吗?

int CA = Convert.ToInt32(CheckAmount.Text);
for (int i = 0; i <= CA; i++)
{

}

2 个答案:

答案 0 :(得分:0)

我可以接近,但你所说的是:

  

检查CheckBoxList foo

中的 blah 数量的CheckBoxes

代码:

//The CheckBoxList name is boxes
int CA = Convert.ToInt32(CheckAmount.Text);
Random rng = new Random();
int x = 0;
for (int y = CA; y != 0; y--)
foreach (CheckBox i in boxes.Controls)
{
     x = rng.Next(1, boxes.Length + 1); //have to add 1 or it will never pick the last box
     if(boxes[boxes.Controls.IndexOf(i)] == x - 1)
     {
          i.Checked = true;
          y--;
     }
     else
     {
          continue;
     }
}

它的作用是查看所有复选框,然后从中随机选择 blah 复选框并进行检查。您的代码中 blah CA

希望它有所帮助!

<强> Techcraft7

答案 1 :(得分:0)

如果你想确切地检查60%的行(或者最接近的舍入错误会让你得到),你应该随机排序行,然后取出前60%的行。

例如:

var r = new Random();
var checkboxes = this.Controls.OfType<CheckBox>();
float totalBoxes = checkboxes.Count();
var targetCount = (int)(totalBoxes * 0.60F);

var targetItems = checkboxes
    .OrderBy( c => r.Next() )  //Sort randomly
    .TakeWhile( (c,i) => i <= targetCount );  //take the first 60%
foreach (var c in targetItems) c.Checked = true;