Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Динамически создание обьекты (http://forum.oszone.net/showthread.php?t=162121)

Smile 02-01-2010 15:52 1309169

Динамически создание обьекты
 
Помогите пожалуйста. Как в VB 2005 Net динамически создать кнопки и обработать нажатие на них??? Заранее спасибо=)

Admiral 04-01-2010 06:56 1310350

Smile, в простейшем случаи код обработчика уже должен быть написан. А создание за малым.
Код:

Dim DynamicButton As New Button
With DynamicButton
    .Parent = Me
    .Location = New Point(10, 10)
    .Size = New Size(150, 40)
    .Text = "Динамически созданная кнопка"
End With
AddHandler DynamicButton.Click, AddressOf DynamicButton_Click 'Или другое имя обработчика

'...

Private Sub DynamicButton_Click(ByVal Obj As Object, ByVal eventArgs As EventArgs)
'... обрабатываем
End sub


Smile 16-01-2010 12:32 1321626

А вот как сделать обработчик если у нас массив этих кнопок???
Код:


Dim i As Integer
Dim DynamicButton(3) As Button
For i = 1 To 3
 DynamicButton(i) = New Button
 With DynamicButton(i)
    .Parent = Me   
    .Location = New Point(10 * i, 10 * i) 
    .Size = New Size(40, 40)
    .Text = "" 
End With         
Next


Admiral 16-01-2010 23:39 1322162

Smile, например можно повесить все кнопки на один обработчик, а там проверять, что за кнопка нажата.
Код:

For i = 1 To 3
'...
    AddHandler DynamicButton(i).Click, AddressOf DynamicButton_Click
Next
'...
Private Sub DynamicButton_Click(ByVal Obj As Object, ByVal eventArgs As EventArgs)
    Dim CurButton As Button = Obj
    ' В идеале должны получить имя кнопки здесь
    ' Dim ButtonName As String = CurButton.Name
    ' Но увы там пусто, так что немного по другому,
    ' определяем нажатую кнопку
    Select Case (CurButton.Location.X / 10)
        Case 1
            MsgBox("Привет, кнопка № 1", MsgBoxStyle.Information, "Нажата кнопка")
        Case 2
            MsgBox("Привет, кнопка № 2", MsgBoxStyle.Information, "Нажата кнопка")
        Case 3
            MsgBox("Привет, кнопка № 3", MsgBoxStyle.Information, "Нажата кнопка")
        Case Else
            MsgBox("Привет, неизвестная кнопка", MsgBoxStyle.Information, "Нажата кнопка")
    End Select
End Sub



Время: 01:26.

Время: 01:26.
© OSzone.net 2001-