各列に 1 つのオプション、各行に 1 つのオプションのみを選択できるように、ラジオ ボタンの 2D グリッドを実装する最良の方法は何ですか?
Dennis Williamson
質問する
765 次
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 に答える