0

さて、私はポイントにまっすぐに行くつもりです.20個のチェックボックスが次のように並んでいます:

私がやろうとしているのは、各列のチェックボックス (上に番号を付けたもの) を一度に 1 つだけチェックできるようにすることです。もともとは、各「チェック済み」イベントを通過して、それらがチェックされている場合、列の他の3つのチェックを外しますが、これは実際には実用的ではなく、全部で80個のチェックボックスがあるため非常に長いことに気付きました.

誰かが私を正しい方向に向けることができるかどうか疑問に思っていましたか?

4

2 に答える 2

0

これを使って:

public class ColumnCheckBox:CheckBox
{
    public int ColumnIndex;
}

void columnCheckBox1_CheckedChanged(object sender, EventArgs e)
{
    int columnIndex = ((ColumnCheckBox)sender).ColumnIndex;
}

次に、その列のチェックボックスのみをオンにします。List<List<CheckBox>> CheckBoxList明らかに、あなたができるようにあなた はチェックボックスのリストを持っている必要があるでしょうforeach (ColumnCheckBox cb in CheckBoxList(columnIndex))

于 2012-08-18T04:30:23.710 に答える
0

saul672 が言ったように、まさにラジオボタンが設計されたものであるため、おそらくラジオボタンを使用する必要があります。ただし、正方形が好きで、そうでないためにチェックボックスを使用してこれを実装したい場合は、次のようにします。

同じ列のチェック ボックスのみを含むコンテナー内にチェック ボックスを配置する必要があります。次に、このイベントをすべてのチェック ボックスに追加します。

private void CheckedChanged(object sender, EventArgs e)
{
    CheckBox cb = (CheckBox) sender;
    if (cb.Checked)
    {
        foreach (CheckBox control in cb.Parent.Controls)
        {
            if (control != cb)
                control.Checked = false;
        }
    }
}
于 2012-08-18T04:39:48.297 に答える