0

我有一个关于数组的小问题。

这是代码:

char[] select = new char[] { '+', '-', '/', '%' };
var rand = new Random();
char num = select[rand.Next(5)];

我有五个CheckBox控件。如果checkboxadd选中了名为我的控件,我希望数组的值为{ + }. 如果我的控件命名checkboxadd并被checkboxsubtract选中,我希望数组的值更改为{ +, - }. 等等。

这可能吗?

更多:我正在创建一个 Windows 窗体应用程序。该应用程序是一个算术学习系统,它提供一组通过CheckBox控件选择的操作。我认为我的方法是错误的......有人可以帮忙吗?

4

1 回答 1

2

您在设计器中添加复选框(因此它们是在 InitializeComponent() 调用中创建的)。之后,您初始化一个助手数组,该数组允许在 CheckedChanged 事件处理程序中进行优雅的编码。因此,您对处于选中状态的每个更改做出反应:

public partial class Form1 : Form {
    private CheckBox[] checkboxes;
    private char[] operators;

    public Form1() {
        InitializeComponent();
        checkboxes = new[] { checkBox1, checkBox2, checkBox3, checkBox4, checkBox5 };
        checkBox1.Tag = '+';
        checkBox2.Tag = '-';
        checkBox3.Tag = '*';
        checkBox4.Tag = '/';
        checkBox5.Tag = '%';
        foreach (var cb in checkboxes) {
            cb.CheckedChanged += checkBox_CheckedChanged;
        }
    }

    private void checkBox_CheckedChanged(object sender, EventArgs e) {
        operators = checkboxes.Where(cb => cb.Checked)
            .Select(cb => cb.Tag)
            .Cast<char>()
            .ToArray();
    }
}
于 2012-11-29T21:24:52.313 回答