Vb.Net İle Nesne Ekleme (Anlatım)
-
arkadaşlar merhaba. Uzunsayılabilecek bir süredir VB 6 da çalışıyordum ancak VB.Net e geçtim
Bugüne kadar kullanmadığım, öğrenmediğim, şimde de öğrenince neden kullanmadığım için kendime sövdüğüm nesne ekleme olayını anlatacağım.
Forma bir adet button ekleyin. uygun yerlere aşağıdaki kodu yazın. Şimdi kodu inceleyelim.
Public Class Form1
Dim fff As New Form
Dim ddd As New Label
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
fff = New Form
ddd = New Label
ddd.Text = "melaba"
fff.Controls.Add(ddd)
fff.Show()
End Sub
End Classkodumuz bu. Şimdi inceleyelim, kurcalayalım.
dim fff as new Form. bu satırda, adı fff olan yeni bir form tanımlıyoruz.
dim ddd as new label bu satırda, adı ddd olan yeni bir label nesnesi tanımlıyoruz.
button'un click olayına;
fff = new form
ddd= new label
yazarak, ekleyeceğimiz fff ve ddd nesnelerini button'un click olayına tanımlıyoruz.
ddd.text="melaba" satırında, ddd'nin(label) text değerini belirliyoruz. burada "melaba" olarak şeyettim.
daha sonra ise;
fff.controls.add(ddd) diyoruz. Bu komut, fff olarak belirlediğimiz yeni forma, ddd olarak belirlediğimiz label'i eklememizi sağlıyor.
fff.show satırında ise fff formunu bize göstermesini söylüyoruz.
bu kadar. button'a tıkladığımızda yeni bir form açılacak ve "melaba" yazan bir label göreceğiz.
Başlangıç için bunu anlatmak istedim. Event ekleme, nispeten karmaşık kullanımı falan ilerleyen zamanlarda anlatacağım.
Esas olay şu;
dim zamazingo as new hedehödö
yazıp, kullanacağımız zaman da
zamazingo = new hedehödö gibi tanımlama yapmamız gerek. Daha sonra bunu istediğimiz amaç için şekillendirebiliriz.
-
Evet arkadaşlar, kimsenin yazmaması iyi olmuş böylece AddHandler olayını da anlatabileceğim aynı başlık altından =)
Öncelikle nedir, ne işe yarar diye soran olursa onu cevaplayayım. AddHandler, eklediğimiz kontrolün tepki vermesi içindir diye özetleyebilirim.
Malumunuz, kontrollerin Eventleri (olayları) var. Textbox_Textchanged, Button_Click gibi. AddHandler sayesinde de, dinamik olarak eklediğimiz kontrollere bu özelliği katabiliriz.
formumuza bir adet textbox, bir adet de buton ekleyelim.
Form'un kod sayfasına girelim, Public Class Form1 yazan satırın hemen altına;
Private WithEvents btn As New Button
Private WithEvents web As New WebBrowser
Private WithEvents yeni As New Formkodlarını yazalım. Bu şekilde sonradan dinamik olarak ekleyeceğimiz Form, Buton ve WebBrowser'ı tanıtmış oluyoruz. Neyse;
Şimdi de forma eklemiş olduğumuz Buton'un kodlarına geçelim.
yeni = New Form
web = New WebBrowser
btn = New Button
Bunları, Button_Click event'inde yani buton'a tıklayınca kullanacağımız için Button'ın Click eventi altına yazıyoruz.web.Navigate(TextBox1.Text)
web.Dock = DockStyle.Bottom
yeni.Controls.Add(web)
yeni.Text = TextBox1.Text
yeni.Show()Yukarıdaki satırlarda, web isimli yeni browserımızın tarayacağı sayfayı ve özelliklerini belirliyoruz. Yazdığımız kodun özeti; yeni bir form oluşturması, bu formda bir browser olması, ve bu browser'ın TextBox1 de yazdığımız sayfayı göstermesi. Bu haliyle de kullanabilirsiniz tabi.
Yok eğer ben yeni sayfaya bir de buton eklemek ve butona tıklandığında sayfanın kodlarını almak istiyorum diyorsanız altta anlatacaklarımı da okuyun =).
Şimdi, biz bu btn nesnesini uygulama çalışırken ekleyeceğimiz için çift tıklayı girip kod yazma gibi bir durumumuz olamayacak. Bundan dolayı her şeyi önceden ayarlamamız gerek. Bunu nasıl yapacağız peki? Anlatıyorum.
Button1_Click event'i altına yazmaya devam ediyoruz.
AddHandler btn.Click, AddressOf btn_tiklaBu ne anlama geliyor? Bu şu anlama geliyor. btn'ın, Click Event'inde yapacaklarını, btn_tikla altında anlatacağım.
o halde hemen bir btn_tikla sub'ı oluşturmamız gerek. Onu da oluşturalım.
Private Sub btn_tikla(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn.Click
Parantez içindeki yazıları Button1_Click eventinden kopyalayabilirsiniz. Sadece Handles btn.Click kısmını değiştiriyoruz. Hangi nesnenin hangi Event'i için kullanacaksak onu yazıyoruz.
kod satırına ise;
MsgBox(web.DocumentText)
yazarak, bize browser'ın sayfa kodunu göstermesini sağlıyoruz.
Çok iyi anlatamamış olabilirim. Takıldığınız yerleri sormaktan çekinmeyiniz.
Bu da Form'un tüm kodu;
Public Class Form1
Private WithEvents btn As New Button
Private WithEvents web As New WebBrowser
Private WithEvents yeni As New Form
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
yeni = New Form
web = New WebBrowser
btn = New Button
web.Navigate(TextBox1.Text)
web.Dock = DockStyle.Bottom
yeni.Controls.Add(web)
yeni.Text = TextBox1.Text
btn.Text = "kodları al"
yeni.Controls.Add(btn)
yeni.Show()
AddHandler btn.Click, AddressOf btn_tikla
End Sub
Private Sub btn_tikla(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn.Click
MsgBox(web.DocumentText)
End Sub
End Class