2013-05-05 2 views
0

양식의 197 개의 체크 박스 중 하나를 클릭하면 한 블록의 코드를 실행하려고합니다. 폼로드 (이 프로그램은 좌석 예약 시스템)에 각 좌석의 가용성을 확인하는 데 사용한 배열의 모든 확인란이 있습니다. 각 시트는 버튼으로 표시된 체크 박스이며 체크 된 후에는 선택된 시트를 표시하기 위해 "선택된 시트"레이블을 원합니다. 아래의 코드에서 같은 배열을 사용하여 체크되었는지 확인하고, 레이블이 업데이트 된 경우이를 확인합니다. 아래 코드는 체크 박스 중 하나를 클릭 할 때 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다"라는 오류를 제공합니다. 이것이 왜 나는지 모르겠고 해결책을 찾지 못합니다. 나는 그저 처음 세 개의 체크 박스를 코딩 중이며, 그것이 작동 하는지를보기 위해서입니다. 이상적으로 197 개의 체크 박스를 모두이 프로 시저의 핸들로 지정하고 싶습니다. 따라서 모든 체크 시트를 클릭하면 체크 시트가 체크됩니다.배열의 체크 상자 상태 확인 - 런타임 오류

누구나 해결할 수있는 솔루션이 있다면! 감사.

Public Class frmSeatPlan 

Dim seat(11, 20) As Control 

Private Sub A1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles A1.CheckedChanged, A2.CheckedChanged, A3.CheckedChanged 

    seat(1, 1) = A1 
    seat(1, 2) = A2 
    seat(1, 3) = A3 

    For y = 1 To 1 
     For x = 1 To 3 
      Dim seat(y, x) As CheckBox 
      If seat(y, x).Checked = True Then 
       selectedSeats = selectedSeats & seat(y, x).Name & ", " 
       MsgBox(selectedSeats) 
       lblSelected.Text = selectedSeats 
      End If 
     Next x 
    Next y 



End Sub 

답변

0

핸들 절을 197 번 작성 하시겠습니까? 당신이 끝내면 실수하지 않았 음을 확신 할 수 있습니까? # 156과 # 157 사이에 좌석 # 198를 추가하면 어떻게됩니까? 점차적으로 유지 보수의 악몽을 계획하고 있습니다. 대신 코드에서 이벤트를 바인딩해야합니다.이 이벤트는 해당 확인란을 만들 수도 있습니다. 이렇게하면 당신은 당신이 얻고있는 문제를 결코 가지지 못할 것입니다.

For y = 1 to 3 
    For x = 1 to 3 
    Dim chk As New CheckBox 
    'set positioning on the screen 
    chk.X = x 
    chk.Y = y 
    AddHandler chk.CheckedChanged, AddressOf Any_CheckedChanged 
    Next 
Next 

이상적으로, 당신은 모든 좌석이 X와 Y를 할당 할 수 있기 때문에 그들이 만들 때,뿐만 아니라, 즉 seat(y, x)를 배열을 필요로하고 이벤트 인수로 그 전달 (그래서 당신은 아마 사용자 정의 이벤트가 필요합니다)되지 않습니다 .