我有一个checklistbox,我想随机检查文本框中的一定数量的项目(CheckAmount.Text) - 即如果用户输入60%(0.60),我想要检查列表框中60%的项目被检查。这有可能甚至关闭吗?
int CA = Convert.ToInt32(CheckAmount.Text);
for (int i = 0; i <= CA; i++)
{
}
答案 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;