Visual Basic 2008 массивы управления - PullRequest
1 голос
/ 21 февраля 2010

Я смотрю на управление свойствами массива кнопок в VB 2008 (экспресс). Я смотрел на пример кода из белой книги в MS, и это отчасти заставляет мою голову крутиться по сравнению с тем, что было сделано в VB6! (и да, я любитель, поэтому, пожалуйста, простите за плохое кодирование и, возможно, за простой вопрос для опытных здесь ...)

Если я правильно читаю, правильный способ сделать это сейчас - создать отдельный класс, создать конструкторы и т. Д. Для этого класса, а затем создать его экземпляр в проекте?

Я пытаюсь использовать относительно простой массив, подобный этому:

    '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 Ответ

1 голос
/ 21 февраля 2010

Вам нужно сделать массив кнопок полем или свойством в классе, а не в методе загрузки.

Самый простой способ - просто переместить объявление Dim btn(30) As Button из метода load в класс (прикрепить его к строке над методом load), и все готово.

Кто-то может поспорить о стандартах кодирования и прочем - но я думаю, что это заставит вас работать (-:

Хорошо, в дополнение к вышеизложенному и вашему комментарию, достаточно кода, чтобы проиллюстрировать то, что я пытался объяснить. Этот код скомпилирует и запустит массив кнопок, доступный из двух методов в классе формы:

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
...