C# 选中c中的复选框#
我制作了一张获胜表格,并给出了一些复选框,显示学生可以选择的课程,通过勾选复选框,他可以告诉我他想选哪些课程,但我想在他勾选三门课程时重新给他发短信,如果他尝试勾选第四个复选框,那么消息框应该会显示,告诉他不能选择更多课程三个以上,第四个复选框不应选中。那么我该怎么做呢?使用复选框并计算表单上当前选中的复选框数,然后显示一个消息框并取消选中触发事件的复选框(如果当前超过3个)。假设您使用的是WinForms,复选框控件有一个OnCheckStateChanged事件。连接所有复选框的事件以调用另一个函数。在此函数中,您可以跟踪选中框的总数,并显示一个弹出窗口,让用户知道已达到最大值。您必须实现OnCheckedChange处理程序,并将其设置为每个复选框。 这将根据复选框的状态增加/减少计数器C# 选中c中的复选框#,c#,.net,winforms,checkbox,C#,.net,Winforms,Checkbox,我制作了一张获胜表格,并给出了一些复选框,显示学生可以选择的课程,通过勾选复选框,他可以告诉我他想选哪些课程,但我想在他勾选三门课程时重新给他发短信,如果他尝试勾选第四个复选框,那么消息框应该会显示,告诉他不能选择更多课程三个以上,第四个复选框不应选中。那么我该怎么做呢?使用复选框并计算表单上当前选中的复选框数,然后显示一个消息框并取消选中触发事件的复选框(如果当前超过3个)。假设您使用的是WinForms,复选框控件有一个OnCheckStateChanged事件。连接所有复选框的事件以调用另
private int checkCounter;
private void OnCheckedChanged(object sender, EventArgs e)
{
// Increase or decrease the check counter
CheckBox box = (CheckBox) sender;
if (box.Checked)
checkCounter++;
else
checkCounter--;
// prevent checking
if (checkCounter == 4)
{
MessageBox.Show("YOU ARE EVIL", "Bad");
box.Checked = false;
}
}
如果达到计数,您可以输出一个消息框并重置复选框。
就这些
不要忘记将此checkhandler应用于复选框的所有CheckedChange事件。我建议您在处理未知数量的选项时使用。下面是一个完整的示例,演示如何使用事件限制选择的总数
var box = new CheckedListBox
{
Dock = DockStyle.Fill,
CheckOnClick = true
};
box.ItemCheck += (sender, e) =>
{
// is the item being checked when 3 are already checked?
if (e.NewValue == CheckState.Checked && box.CheckedItems.Count == 3)
{
// block the change
e.NewValue = CheckState.Unchecked;
}
};
for (var i = 0; i < 10; i++)
{
box.Items.Add("item " + i);
}
new Form {Controls = {box}}.ShowDialog();
您必须为所有CheckedBox CheckChanged事件启动相同的事件处理程序
CheckBox1.CheckedChanged += new System.EventHandler(MyCheckedChanged)
CheckBox2.CheckedChanged += new System.EventHandler(MyCheckedChanged)
private void MyCheckedChanged(object sender, EventArgs e)
{
CheckBox checkbox = sender as CheckBox;
// Check all the checked items. If already 3 selectec
checkbox.Checked = false;
}
这是一个很好的答案,但我选择了一个groupbox,我在其中放置复选框,这样我就可以在那里进行操作。你可以通过将复选框放在groupbox中并将背景色设置为默认背景色来伪造它。所以我认为有更好的方法将此CheckCalendar应用于所有CheckedChanged事件,只需指定每个复选框即可CheckedChanged事件到checkBox1_CheckedChanged()事件,然后写下这段代码,您将看到结果………..Thx获得这个漂亮的答案。
CheckBox1.CheckedChanged += new System.EventHandler(MyCheckedChanged)
CheckBox2.CheckedChanged += new System.EventHandler(MyCheckedChanged)
private void MyCheckedChanged(object sender, EventArgs e)
{
CheckBox checkbox = sender as CheckBox;
// Check all the checked items. If already 3 selectec
checkbox.Checked = false;
}