实现2D网格单选按钮的最佳方法是什么?

时间:2008-11-26 20:40:31

标签: winforms user-interface radio-button options selecteditem

实现单选按钮网格的最佳方法是什么,这样每列只能选择一个选项,每行只能选择一个选项?

3 个答案:

答案 0 :(得分:2)

1D阵列的单选按钮阵列。每一行(或列)都将使用正常的单选按钮功能,而每个列(或行)都将通过在切换单个单选按钮时调用的循环进行更新。

答案 1 :(得分: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);
    }

}

此致 tamberg

答案 2 :(得分:0)

您可以使用自定义集合进行处理并对数字单元格进行数据绑定。

每个子项都有行的属性和列的属性以及true / false值标志,当通过单击或按键更改为true时,它会引发事件。

集合类中的逻辑将响应值更改并循环遍历同一行和列中的其他子项,以通知它们应该为false。

如果您不想使用数据绑定,也可以使用一组用户控件来执行此操作。