SLp*_*SLp 5 c# checkbox winforms
我试图在 Winforms 中创建一个复选框数组,我有四个复选框,如果我点击一个复选框,一个消息框应该显示选中的复选框。
public void checkboxtest()
{
CheckBox[] boxes = new CheckBox[4];
boxes[0] = checkBox1;
boxes[1] = checkBox2;
boxes[2] = checkBox3;
boxes[3] = checkBox4;
for (int i = 0; i <= 4; i++)
{
if (boxes[i].Checked == true && boxes[i].Enabled)
{
MessageBox.Show("boxes[i] is clicked");
}
}
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
checkboxtest();
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
checkboxtest();
}
Run Code Online (Sandbox Code Playgroud)
继续 3 和 4...
我该怎么办??谢谢。
你的循环终止应该是i < 4,而不是i <= 4因为你的数组只有 4 个元素。也是boxes[i].Checked == true多余的,可以直接说boxes[i].Checked。
如果您想在切换状态时显示选中的复选框,则需要向它们添加一个事件处理程序(以处理该CheckBox.CheckChanged事件):
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
_checkBoxes = new CheckBox[] { _checkBox1, _checkBox2, _checkBox3, _checkBox4 };
foreach (var checkBox in _checkBoxes)
checkBox.CheckedChanged += new EventHandler(ShowCheckedCheckboxes);
}
void ShowCheckedCheckboxes(object sender, EventArgs e)
{
string message = string.Empty;
for (int i = 0; i < _checkBoxes.Length; i++)
{
if (_checkBoxes[i].Checked && _checkBoxes[i].Enabled)
{
message += string.Format("boxes[{0}] is clicked\n", i);
}
}
MessageBox.Show(message);
}
CheckBox[] _checkBoxes;
}
Run Code Online (Sandbox Code Playgroud)