查找相邻的网格方块(用户控件)

时间:2013-11-04 10:55:39

标签: arrays vb.net grid

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

任何帮助表示感谢,谢谢。

2 个答案:

答案 0 :(得分: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)

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