Pergunta

Estou olhando para controlar as propriedades de uma variedade de botões no VB 2008 (Express). Eu tenho olhado para o código de amostra de um whitepaper no MS, e isso meio que faz minha cabeça girar em comparação com o que foi feito no VB6! (E sim, eu sou um amador, então perdoe a pobre codificação e o que provavelmente é uma pergunta simples para os experientes aqui ...)

Se estou lendo corretamente, a maneira correta de fazê -lo agora é criar uma classe separada, criar construtores etc. para essa classe e instanciá -la no projeto?

Estou tentando usar uma matriz relativamente simples como esta:

    '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

Se eu o colocar no método de carga, não posso acessá -lo de outro botão, porque acho que está em uma sub -rotina privada quando esse snippet está na sub -rotina de carga? Existe uma maneira simples de apenas ter esse código para que a matriz BTN (i) seja acessível a partir de outras funções no formulário?

Foi útil?

Solução

Você precisa fazer da matriz de botões um campo ou uma propriedade na classe, e não no método de carga.

Maneira mais fácil é apenas mover o Dim btn(30) As Button Declaração fora do método de carga na classe (coloque -a na linha acima do método de carga) e você terminou.

Pode -se discutir sobre padrões e outras coisas de codificação - mas acho que isso vai fazer você trabalhar ( -:

Ok, mais adiante e seu comentário, código suficiente para ilustrar o que eu estava tentando explicar. Este código compilará e executará - a matriz de botões acessível a partir de dois métodos dentro da classe de formulário:

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top