2010-02-21 5 views
1

VB 2008 (express)에서 버튼 배열의 속성을 제어하고 있습니다. MS에서 백서의 샘플 코드를 살펴 봤는데 VB6에서 수행 한 작업과 비교하면 머리가 스핀 다운됩니다! (그리고 아마 나는 아마추어 다. 그래서 가난한 코딩을 용서해라. 그리고 아마 여기의 경험있는 사람들을위한 간단한 질문 일 것이다.)visual basic 2008 컨트롤 배열

내가 올바르게 읽는다면, 지금 올바르게하는 방법은 다음과 같다. 별도의 클래스를 만들고 해당 클래스에 대한 생성자 등을 만든 다음 프로젝트에서 인스턴스를 생성 하시겠습니까?

이 같은 비교적 간단한 배열 사용하려고 해요 : 나는 부하 방법에 넣어 경우

'Create buttons 
    'Dim btn(30) As Button 
    'For i As Integer = 0 To 29 
    ' btn(i) = New Button() 
    ' btn(i).Width = 100 
    ' btn(i).Height = 30 
    ' btn(i).Text = i + 1 

    ' btn(0).Left = 120 
    ' btn(0).Top = 100 

    ' If i >= 1 And i <= 14 Then 
    '  btn(i).Left = 120 
    '  btn(i).Top = btn(0).Top + (i * 30) 
    ' End If 

    ' If i = 15 Then 
    '  btn(15).Left = 235 
    '  btn(15).Top = 100 
    ' End If 

    ' If i >= 16 And i <= 29 Then 
    '  btn(i).Left = 235 
    '  btn(i).Top = btn(0).Top + ((i Mod 15) * 30) 
    ' End If 
    ' Me.Controls.Add(btn(i)) 

    'Next 

을 나는 그것이로 생각하기 때문에 나는이 다른 버튼에서 액세스 할 수 없습니다 이 스 니펫이로드 서브 루틴에있을 때 개인 서브 루틴? btn (i) 배열이 폼의 다른 함수에서 액세스 할 수 있도록이 코드를 갖는 간단한 방법이 있습니까?

답변

1

load 메서드가 아닌 클래스의 필드 또는 속성을 단추 배열로 설정해야합니다.

가장 쉬운 방법은로드 메소드의 Dim btn(30) As Button 선언을 클래스로 옮기면됩니다 (로드 메소드 위의 행에 붙여 넣기 만하면됩니다).

하나는 표준과 물건을 코딩에 대해 주장 할 수있다 - 그러나 나는 당신이 (작업 얻을 수있을 거라 생각 - : 더 내가 설명하려고 있었는지 설명하기에 충분한 코드, 위 및 귀하의 코멘트에,

확인 .이 코드는 컴파일 및 실행 - 폼 클래스 내에서 두 가지 방법에서 액세스 할 수있는 버튼 배열 : 불행하게도

Public Class Form1 

    Dim btn(30) As Button 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     For i As Integer = 0 To 29 
      btn(i) = New Button 
     Next 
    End Sub 

    Private Sub DoSomethingElse() 
     For i As Integer = 0 To 29 
      btn(i).Text = String.Format("{0}", i + 1) 
     Next 
    End Sub 

End Class 
+0

내가 그 일 생각하지 않습니다를 ... 나는 내가 한 서브 루틴,로를 설정해야하고, 다음 양식의로드 메서드에서 그것을 호출하지만 난 여전히 볼 수 또는 btn (i) ... 여전히 범위 문제가 조작 할 단추를 클릭 이벤트를 얻을 수 없습니다. –

+0

Erm, th에 대한 Dim e 버튼은 하위가 아닌 클래스에 있어야합니다. VB는 내 평상시의 무기가 아닙니다 ...하지만이 코드를 추가 할 수 있습니다. – Murph

+0

나는 수업에 들어갔을 때 일하는 것으로 생각한다. 주말에 이것에 대해 의아해하고있다. 나는 배우고있다. 천천히, 그러나 배우기. –