2011-12-08 2 views
1

저는 2D 배열에 저장되어있는 동적으로 생성 된 버튼 그리드를 사용하여 vb.net에서 지뢰 찾기 게임을 만들기 시작했습니다. 특정 위치가 덮여 있는지 여부를 추적하는 다른 2D 배열 (Boolean)이 있습니다. 그리드를 업데이트하기 위해 언제든지 실행할 수있는 '그리드 업데이트'방법이 있습니다. 그래서 그 모든 정보가 공개되어야합니다.vb.net : 지뢰 찾기 이벤트를 클릭하십시오.

버튼을 클릭하면 해당 버튼의 상태가 밝혀 지도록 어떻게 만들 수 있습니까? 이벤트 핸들러를 사용하여 시도했지만 인수를 전달할 수 없으며 버튼의 x 및 y 위치를 알아야 올바른 버튼을 발견 할 수 있습니다.

감사합니다.

+0

wpf/winforms? – MichaelS

+1

버튼 배열에서 * sender * back을 찾습니다. 또는 Tag 속성을 사용하십시오. –

+0

그것은 Windows Form입니다. – SiliconCelery

답변

0

True 값을 사용하여 모든 버튼을 각각 Dictionary(Of Button, Boolean)에 넣을 수 있습니다. 나중에 Click 이벤트 핸들러에서 보낸 사람을 Button으로 캐스팅하고 사전에 해당 항목을 False으로 설정합니다. 다소 이런

(나는 일반적으로 C#을 사용하고있어 내 나쁜 VB 변명) :

Buttons = new Dictionary(Of Button, Boolean)() 
For Each button in YourButtonArray 
    Buttons.Add(button, True) 
End 

' Click handler: 
Dim clickedButton = CType(sender, Button) 
Buttons(clickedButton) = False 

업데이트 : 또는 - @Hans 옆모습이 질문에 대한 의견에서 지적 - 당신을 더 간단하게 Tag 속성을 사용할 수 있습니다.

+0

"보낸 사람을 버튼에 던지기"란 의미는 무엇입니까? – SiliconCelery

+0

형변환. 이벤트 처리기는 '보낸 사람'을 알고 있습니다. 이것을 Type Button에 캐스트하면 사전의 키로 사용할 수 있습니다. –

관련 문제