C#中的复选框数组

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...

我该怎么办??谢谢。

Chr*_*ich 3

你的循环终止应该是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)