实现 2D 单选按钮网格的最佳方法是什么,以便每列中只能选择一个选项,每行中只能选择一个选项?
Dennis Williamson
问问题
765 次
3 回答
2
单选按钮的一维数组的一维数组。每行(或列)都将使用正常的单选按钮功能,而每一列(或行)将由一个循环更新,每当切换单个单选按钮时调用。
于 2008-11-26T21:26:37.647 回答
0
您可以使用自定义集合和数据绑定单选按钮来解决此问题。
每个单独的孩子都有一个行属性和一个列属性以及真/假值标志,当通过单击或按键更改为真时会引发一个事件。
集合类中的逻辑将响应值更改并循环遍历同一行和列中的其他子项,以通知它们它们应该为假。
如果您不想进行数据绑定,也可以使用一组用户控件来实现。
于 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 回答