2013-11-04 4 views
0

VB.net에 10x10 격자의 사용자 정의 컨트롤을 만들고 실행시 Windows 폼에 배치하는 코드를 작성했습니다. 각 사용자 정의 컨트롤은 목록에 저장됩니다. 현재 사각형에 인접한 격자 사각형을 찾을 수 있어야합니다. 문제는 목록의 크기가 1에서 100 사이에 불과하다는 것입니다. 사용자 컨트롤을 저장할 수 있다면 훨씬 간단 할 것입니다. 배열 (xposition, yposition) 그럼 인접한 사각형은 xposition + -1과 yposition + -1이라고 말할 수 있습니다 만, 어떻게해야할지 모르겠습니다.인접한 격자 사각형 찾기 (사용자 정의 컨트롤)

도움을 주시면 감사하겠습니다. 제어 인덱스의

답변

1

10 × 10 그리드 레이아웃 :

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) 
0

Dim UserControlList As List(Of List(Of UserControl))을보십시오.

이제 사용자 정의 컨트롤을 폼에로드 할 때 각 행을 목록에 넣은 다음 해당 목록을 UserControlList에 추가하십시오.

이제 2 차원 목록이 있고 UserControlList (3) (5)는 네 번째 (인덱스 3) 줄의 여섯 번째 (인덱스 5) 컨트롤입니다.

인접한 컨트롤은 UserControlList (2) (5), UserControlList (4) (5), UserControlList (3) (4), UserControlList (3) (6)입니다.

관련 문제