0

配列に関して小さな問題があります。

これはコードです:

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

私は5つのCheckBoxコントロールを持っています。という名前のコントロールcheckboxaddがチェックされている場合、配列に の値が必要です{ + }。また、コントロールに名前が付けられcheckboxaddcheckboxsubtractチェックされている場合は、配列の値を に変更し{ +, - }ます。等々。

これは可能ですか?

詳細: 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 に答える