3

实现 2D 单选按钮网格的最佳方法是什么,以便每列中只能选择一个选项,每行中只能选择一个选项?

4

3 回答 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 回答