3

各列に 1 つのオプション、各行に 1 つのオプションのみを選択できるように、ラジオ ボタンの 2D グリッドを実装する最良の方法は何ですか?

4

3 に答える 3

2

ラジオ ボタンの 1D 配列の 1D 配列。各行 (または列) は通常のラジオ ボタン機能を使用しますが、各列 (または行) は、個々のラジオ ボタンが切り替えられるたびに呼び出されるループによって更新されます。

于 2008-11-26T21:26:37.647 に答える
0

カスタム コレクションを使用してこれにアプローチし、ラジオ ボタンをデータバインドすることができます。

個々の子には、行のプロパティと列のプロパティ、およびクリックまたはキー押下によって true に変更されたときにイベントを発生させる true/false 値フラグがあります。

コレクション クラスのロジックは値の変更に応答し、同じ行と列にある他の子をループして、それらが false であることを通知します。

データバインドしたくない場合は、ユーザー コントロールのコレクションを使用して行うこともできます。

于 2009-02-23T04:45:22.263 に答える
0

このようなもの?

using System;
using System.Drawing;
using System.Windows.Forms;

class Program {

    static RadioButton[] bs = new RadioButton[9];

    static void HandleCheckedChanged (object o, EventArgs a) {
        RadioButton b = o as RadioButton;
        if (b.Checked) {
            Console.WriteLine(Array.IndexOf(bs, b));
        }
    }

    static void Main () {
        Form f = new Form();
        int x = 0;
        int y = 0;
        int i = 0;
        int n = bs.Length;
        while (i < n) {
            bs[i] = new RadioButton();
            bs[i].Parent = f;
            bs[i].Location = new Point(x, y);
            bs[i].CheckedChanged += new EventHandler(HandleCheckedChanged);
            if ((i % 3) == 2) {
                x = 0;
                y += bs[i].Height;
            } else {
                x += bs[i].Width;
            }
            i++;
        }
        Application.Run(f);
    }

}

よろしく、タンバーグ

于 2008-11-28T12:50:49.937 に答える