Soru :
Merhabalar elbette kendi başıma oturup şurda bir visual studio yazamam bunun elbette kendim de farkındayım ama denemeye çalıştığım bir şey var o yüzden yapmak istediğim şu olay var
İstediğim şey button veya textbox öğelerini kod ile forma ekleyebilmek
ve bunu sınırsız hale getirmek yani istediğim kadar buton atayabileyim ve içeriğinede kod işlemi atayabileyim bunu yapmanın yolu olduğunu düşünüyorum şu şekilde yapmayı düşünüyorum bunları işlem olarak bir textbox’a aktarıcam ve build ettiğimde çıkan uygulamanın içinde bu text derlenicek ve eklediğim butonlar forma aktarılacak.
eğer bu yöntem ile bu işlem yapılamıyorsa ne şekilde yapabilirim?
Cevap :
Öncelikle formunuza bir FlowLayoutPanel ekleyin,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Public Class Form1 Dim index As Integer = 0 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim bt As New Button bt.Location = New Drawing.Point(8, 15 + index * 24) bt.TabIndex = index bt.Text = "Düğme: " & index.ToString bt.Name = "Düğme" & index.ToString AddHandler bt.Click, AddressOf tıkla Me.FlowLayoutPanel1.Controls.Add(bt) index += 1 End Sub Sub tıkla(ByVal sender As Object, ByVal e As System.EventArgs) MsgBox(DirectCast(sender, Button).Name & " tıklandı!") End Sub End Class |
Size daha iyi bir referans olması açısından kodlarımızı satır satır inceleyelim.
bu kod satırı Flow Panel içerisine ekleyeceğimiz buton sayısını tutmak için kullanacağız:
1 2 3 | Dim index As Integer = 0 |
bu bölümde “Button” sınıfından “bt” isimli bir nesne türettik. yeni yeni butonumuz oluşturuldu. Ardından bu butonun Location, Text, Name gibi değerlerini girdik:
1 2 3 4 5 6 7 | Dim bt As New Button bt.Location = New Drawing.Point(8, 15 + index * 24) bt.TabIndex = index bt.Text = "Düğme: " & index.ToString bt.Name = "Düğme" & index.ToString |
burada oluşturduğumuz yeni butona bir event tanımladık. yani bu butona tıkladığımızda ne olacak? butonun click eventinin “tıkla” isimli bir metoda adreslendiğini söyledik :
1 2 3 | AddHandler bt.Click, AddressOf tıkla |
ve oluşturulan butonu FlowLayoutPanel1 içerisine ekledik.
1 2 3 | Me.FlowLayoutPanel1.Controls.Add(bt) |
ve yukarıda belirttiğim “tıkla” metodunu oluşturduk. butonumuza tıklandığında bu metod tetiklenecek.
1 2 3 4 5 | Sub tıkla(ByVal sender As Object, ByVal e As System.EventArgs) MsgBox(DirectCast(sender, Button).Name & " tıklandı!") End Sub |