首页 文章

多维控件数组

提问于
浏览
2

我正在用VB.NET编写应用程序并面临以下问题 . 我正在尝试创建一个界面,允许用户根据一系列时间和一周中的几天来选择他们的可用性 . 我想以表格形式创建复选框控件,其中包含两个索引,可用于引用特定时间范围和一周中的某一天 . 该表看起来像这样:

Sunday  Monday  Tuesday  Wednesday  Thursday  Friday  Saturday
1:00am       [x]     [x]      [x]       [x]        [x]     [x]       [x]
2:00am       [x]     [x]      [x]       [x]        [x]     [x]       [x]
3:00am       [x]     [x]      [x]       [x]        [x]     [x]       [x]
4:00am       [x]     [x]      [x]       [x]        [x]     [x]       [x]

......等等 . 因此,周日@ 1:00 am将是0,1 - 周一@ 1:00 am将是0,2等 .

我按照文章here创建并公开了一个控制数组,但它并不是多维的 .

有没有人知道动态生成控件的类似方法并将它们存储在VB.NET中的多维数组中?

提前致谢!

2 回答

  • 1

    控件是一种昂贵的对象 . 你在这里有太多,绘画表格将开始变得明显变慢 . 请改用DataGridView,添加DataGridViewCheckBoxColumn类型的列 .

  • 3

    您可能想要考虑在表单中使用TableLayoutPanel .

    您可以使用的一种方法是在设计器中创建单个控件(如果它是固定大小的网格),或者在可变大小网格的程序代码中创建,并将它们放入(或添加到)网格单元格中 .

    如果需要处理单击事件,可以将所有控件的事件绑定到单个处理程序(在链接到的文章中描述) . 然后,设置每个控件的tag属性以反映网格位置 . 例如,如果您的网格小于十乘十,请使用整数设置标记,其中列为十位数,行为一位 . 在处理程序例程中,tou可以使用sender.tag属性判断单击了哪个控件 .

    ---进一步阅读后,似乎可以使用TableLayoutPanel GetPositionFromControl方法来确定触发事件的控件的位置,即:tableName.GetPositionFromControl(sender) . 我将在稍后的代码中尝试,也许我可以摆脱标签 .

    如果您不需要处理事件,则可以使用TablelayoutPanel GetControlFromLocation方法来访问各个控件 .

    因此,实际上,您可以使用TableLayoutPanel作为二维控件数组,而无需编写自己的数组 .

相关问题