Merhaba, C# String ile Nesnelere Erişmek yazım ile C# yazılarına son hız devam… Önceki yazımda C# String ile Değişkene Erişmek konusundan bahsetmiştim. Bu yazımda orada verdiğim yöntemden farklı bir yöntem kullanarak bir formdaki nesnelere ulaşacağız. Ve tabi ki ulaşmak istediğimiz nesne forma dinamik olarak eklenmiş olacak. Şöyle ki bir forma herhangi bir nesne eklemeyeceğiz. Çalışma zamanında forma kod ile eklenmiş olan bir nesneyi, string ile adını kullanarak bulacağız. :D
C# String ile Nesnelere Erişmek
Bu konuyu yine son projem olan C# IDLE Oyun Geliştirme – Fabrika Kurma Oyunu (İskelet) içerisinde kullandım. Verdiğim örnekler de o projeden alındı.
Şimdi gelin nasıl yaptığımızda bakalım.
İlk olarak forma bir flowlayoutpanel ekleyin. Sonra bir button. Ama bu button flowlayoutpanel ‘in dışında olsun. Yani şöyle.
Şimdi buttona tıkladıkça flowlayoutpanel ‘e bir label üreteceğiz.
Bu kodlar, buttona her tıklandığında bir label üretecek. Üretilen her labelin text’i rastgele bir sayı olacak. Ancak Name özelliğinde yazanları biliyoruz ki zaten bilmek zorundayız.
Mesela buradaki labellerin adları, veritabanında yer alıyor olabilir.
int counter = 1; private void button1_Click(object sender, EventArgs e) { Random rnd = new Random(); Label lbl = new Label(); lbl.Name = "MustafaBUKULMEZ_" + counter.ToString(); lbl.Text = rnd.Next(100, 10000).ToString(); lbl.AutoSize = false; lbl.Width = 150; lbl.Height = 25; flowLayoutPanel1.Controls.Add(lbl); counter++; }
Şimdi forma bir button ve bir textbox daha ekliyorum. button 2 ile textbox ‘a yazdığım name üzerinden, kodla ürettiğimiz labeli bulacağım ve text özelliğini değiştieceğim.
button 2 kodlarını görelim
private void button2_Click(object sender, EventArgs e) { Label lbl = flowLayoutPanel1.Controls.Find(textBox1.Text, true).FirstOrDefault() as Label; lbl.Text = textBox1.Text; }
Burada gördüğünüz gibi textbox’tan girilen ifadeyi kullanarak, label name üzerinden flowlayoutpanel içerisinde kodla eklenmiş labeli bularak text özelliğini, textbox’a girilen değer olarak değiştiriyor.
Gördüğünüz gibi, biz labelleri eklerken text ‘lerini random sayılar veriyorduk. Ancak textbox’a bir label name’i yazıp, button 2 ye tıkladığımızda, ilgili labeli buldu ve text’ini değiştirdi.
Ben bu işlemi ve C# String ile Değişkene Erişmek yazımda bahsettiğim işlem ile konbinlemiştim. Veri tabanındaki bir tablodaki veriler ile değişkenleri bulup değerlerini değiştiyordum ve bu değerleri yine string ifadeler ile alarak aynı name’deki labellere yine string ifadeleri kullanarak yazıyordum. Bu biraz karmaşık gelebilir. C# IDLE Oyun Geliştirme – Fabrika Kurma Oyunu (İskelet) projesinin tanıtım videosunda bundan bahsetmiştim. O videoyu izleyebilirsiniz.
Bu yazımızda bu kadardı. Diğer derslerde görüşmek üzere…
Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz… C# Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.
Discord’a katılmayı unutmayın.
Sağlıcakla ve kodla kalın….