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