0

テーブルが入ったフォームが欲しいのですが。最初の行はスケールを示します。表の各セルには、チェックボックスボタンがあります。これは私の選択です。(1つしか選択できません(検証))

              **1**             **2**           **3**
a)______________checkBoxbttn_____________________   checkBoxbttn____________________              V

b)     ____________  checkBoxbttn___________________________        V        ___________________      checkBoxbttn

すべての行で1つのチェックボックスのみをマークした後(検証)、将来の使用のために、各行の選択をパラメーターに保存する必要があります。上記の例の場合:int a = 3; int b = 2;

どうすればそれを実装できますか?検証はどのように見えますか?

4

1 に答える 1

0

TableLayoutPanel1つの列と任意の数の行でを使用することをお勧めします。各セルに。を配置しPanelます。各パネルに3つのRadioButtonコントロールを配置して、そのうちの1つだけが選択されるようにします。

どのラジオボタンが選択されているかを知るために、各パネルのコントロールを繰り返し処理して、最初にチェックされたものを返すことができます。

例:

private void button1_Click(object sender, EventArgs e)
    {
        foreach (var row in tableLayoutPanel1.Controls)
        {
            var panel = row as Panel;
            if (panel == null) continue;
            var checkedButton = 
                panel.Controls.OfType<RadioButton>()
                    .FirstOrDefault(r => r.Checked);
            if (checkedButton == null) continue;
            //Process your radiobutton here.
        }
    }

RadioButtonに特定の値を割り当てるために、値を表すプロパティを使用して、RadioButtonから派生するクラスを作成します。

例:

class ScaleRadioButton : RadioButton
{
    public int MyScale { get; set; }
}
于 2012-12-14T15:17:27.967 に答える