PDA

View Full Version : ایجاد اشیاء به صورت پویا در VB.Net



alineghabi
پنج شنبه 28 دی 1385, 00:40 صبح
چگونه در VB.net میتونم یک Button در زمان اجرا ایجاد کنم و event های اونو بزارم

Ner'zhul Arthas
پنج شنبه 28 دی 1385, 01:17 صبح
اینطوری:




Private B(63) As PictureBox

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

For i As Byte = 0 To 7
For j As Byte = 0 To 7
B(i * 8 + j) = New PictureBox
B(i * 8 + j).Parent = Panel1
B(i * 8 + j).Tag = i * 8 + j
B(i * 8 + j).Size = New Size(49, 49)
B(i * 8 + j).Location = New Point(((j * 48) + 16), ((i * 48) + 16))
B(i * 8 + j).BorderStyle = BorderStyle.FixedSingle
B(i * 8 + j).SizeMode = PictureBoxSizeMode.CenterImage
AddHandler B(i * 8 + j).Click, AddressOf BPicturebox_Click
Next
Next

End Sub

Private Sub BPicturebox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Select Case sender.tag
Case 0
'دستور دلخواه
Case 1
'دستور دلخواه
Case 2
'دستور دلخواه
Case 3
'دستور دلخواه
'...
End Select
End Sub



امیدوارم نپیچونده باشم.
اگر خواستید بگید خط به خط توضیح بدم یا این که یه ساده مثل همون مثال که خودتون گفتید بنویسم.

alineghabi
پنج شنبه 28 دی 1385, 01:34 صبح
اینجوریشو میدونم میخوام مثل VB 6 به صورت زیر ایجاد کنم ولی نمیشه


Option Explicit
Private WithEvents label1 As Label
Private WithEvents Check1 As CheckBox

Private Sub label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Check1.Caption = "Checkbox"
End Sub

Private Sub Check1_Click()
MsgBox "Clicked"

End Sub
Private Sub label1_Click()

Form1.BackColor = &H80FF&
End Sub

Private Sub Form_Load()
Set Check1 = Controls.Add("VB.checkbox", "MyButton")
Set label1 = Controls.Add("VB.label", "My")
With Check1
.Move 0, 0, 1200, 315
.Visible = True
End With
With label1
.Left = 400
.Top = 700
.Visible = True
.Caption = "Label"
End With

End Sub

چیکار کنم؟

Ner'zhul Arthas
پنج شنبه 28 دی 1385, 02:08 صبح
چیش نمیشه؟

alineghabi
پنج شنبه 28 دی 1385, 02:23 صبح
خطا میده و شئء ایجاد نمیشه

Ner'zhul Arthas
پنج شنبه 28 دی 1385, 02:25 صبح
اگر میشه سورس دات نتش رو بذارید.

alineghabi
پنج شنبه 28 دی 1385, 19:47 عصر
خودم پشداش کردم
اینم مثالش

Ner'zhul Arthas
جمعه 29 دی 1385, 03:01 صبح
به دستور .Visible = True نیاز نیست.
parent رو هم میتونید me بنویسید تا تو فرم بیاد و نیاز به panel نداشته باشه.



With label1
'.Parent = Panel1
.Parent = Me
.Font = New System.Drawing.Font("Arial", 16)
.ForeColor = Color.DarkOrchid
.Left = 100
.Top = 100
'.Visible = True
.Text = "Label"
End With


دستور زیر هم میتونه Event رو به sub مورد نظر بده.



AddHandler objecte_morede_nazar.evente_morede_nazar, AddressOf name_sube_morede_nazar