0

我在 VB.net 中编写了一些代码,它创建了三个 10x10 的用户控件网格,并在运行时将它们放在 Windows 窗体上,每个用户控件都存储在一个列表中。我需要能够找到与当前网格相邻的网格正方形,我遇到的问题是列表只是从 1 到 100。如果我可以说将用户控件存储在数组中会简单得多(xposition, yposition) 那么我只能说相邻的正方形是 xposition +-1 和 yposition+-1,但我不知道该怎么做。

任何帮助表示赞赏,谢谢。

4

2 回答 2

1

控制索引的 10x10 网格布局:

 0  1  2  3  4  5  6  7  8  9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99

Const gridWidth=10

Dim idx = CtrlList.IndexOf(current control)
Dim leftIndex = If(idx Mod gridWidth > 0, idx - 1, idx)
Dim rightIndex = If(idx Mod gridWidth < gridWidth - 1, idx + 1, idx)
Dim upIndex = If(idx - gridWidth >= 0, idx - gridWidth, idx)
Dim downIndex = If(idx + gridWidth < CtrlList.Count - 1, idx + gridWidth, idx)
于 2013-11-04T17:25:30.567 回答
0

尝试

Dim UserControlList As List(Of List(Of UserControl)).

现在,当您将用户控件加载到表单上时,将每一行放入一个列表中,然后将该列表添加到 UserControlList。

现在你有一个二维列表,UserControlList(3)(5) 是第四行(索引 3)上的第六个(索引 5)控件。

相邻的控件将是 UserControlList(2)(5)、UserControlList(4)(5)、UserControlList(3)(4)、UserControlList(3)(6)。

于 2013-11-04T19:05:05.193 回答