【问题标题】:Checkbox array in C#C#中的复选框数组
【发布时间】:2011-07-28 12:38:01
【问题描述】:

我试图在 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();
    }

3 和 4 也继续...

我应该怎么做?? 谢谢。

【问题讨论】:

  • 为什么不用事件,你完全错了!

标签: c# winforms checkbox


【解决方案1】:

你的循环终止应该是i &lt; 4,而不是i &lt;= 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;
}

【讨论】:

  • @Chris Schmich:非常感谢。如果我需要添加一个按钮,然后在“MessageBox.Show(message);”中显示这个“消息”怎么办。因此,如果我单击该按钮,则应该显示消息框,而不是在我选中一个框时显示。
  • @SLp:我强烈建议阅读有关 Windows 窗体中的事件:msdn.microsoft.com/en-us/library/1h12f09z.aspx 这是非常值得您花时间的,因为事件在 .NET 中无处不在。不过,对于您的问题,您应该查看 Button.Click 事件(继承自 Control 类):msdn.microsoft.com/en-us/library/…
猜你喜欢
  • 1970-01-01
  • 2017-09-08
  • 2016-11-20
  • 2015-12-05
  • 2012-11-01
  • 1970-01-01
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多