Şimdi bu örneğimizde butonlardan herhangi birine tıkladığımızda form'da bulunan nesne gruplarından herhangi birini rasgele seçen, ve yine rasgele bir renge boyayan örneği fonksiyon yardımıyla yapacağız. Bu örneğimizde şu ön bilgilere ihtiyacınız olacak: random() ve for yada foreach öngüsü.
1. Aşamada: Öncelikle tasarım ekranında formunuza aşağıdaki gibi herbirinden en az beş tane olmak üzere buton ve textbox ve ayrıca bir tane listbox ekleyin. Butonların isimlerini değiştirebilirsiniz, yada olduğu gibi bırakın. listbox a tasarım ekranında aşağıdaki gibi renk isimlerini ekleyin. Bunların sayısını artırabilirsiniz.
2. Aşamada: Butonlardan herhangi birine tıkladığımızda istediğimiz kodun çalışması için bütün butonları seçin ve olaylar bölümünden click olayını tıklayın, böylece bütün butonlarda aynı kod çalışacaktır. Şimdi Click olayına aşağıda gibi bir kod ekleyin.
Random rnd = new Random();
int s1 = rnd.Next(4); //listboxtan seçilen rasgele renk
string renk = listBox1.Items[s1].ToString();
string[] abc = { "buton", "textbox", "listbox" };
boya(abc[rnd.Next(3)], renk); //boya fonksiyonuna göndeirlen rasgele form nesnesi ve renk
bu kod ile boya fonksiyonuna iki parametre gönderiyoruz, 1. parametre abc dizisinden rasgele bir dizi elemanı seçmek için, ikinci parametre ise listbox içerisinden rasgele bir renk seçmek için kullanılacak.
3.Aşamada: Boya fonksiyonumuzu oluşturuyoruz.
public void boya(string ne, string renk)
{
foreach (Control nesne in this.Controls)
{
if (nesne is Button && ne=="buton")
nesne.BackColor = Color.FromName(renk);
if (nesne is TextBox && ne == "textbox")
nesne.BackColor = Color.FromName(renk);
if (nesne is ListBox && ne == "listbox")
nesne.BackColor = Color.FromName(renk);
}
}
hepsi bu kadar gördüğünüz gibi gayet kolay, umarım faydalı olmuştur. Bu soruyu başka şekilde çözdüm diyorsanız, lütfen mail atın alternatif olarak paylaşalım.
Bu örneğin kod gösteriminde konuya cok hakim olmayanlar için eksiklikle var sanki.
Tam olarak ne yapıldığını anlamadım. Direkt kodları kopyalayıp programı çalıştırıp ne istendiğini görererek farklı bir yöntem var mı denemek istedim. Fakat kodları kopyaladığımda hatalar olduğunu gördüm.
Random rnd=new Random(); sınıfı tanımlanmamış . Bu nedenle "rnd" nesnesinin altı kırmızı oluyor.
string renk = listBox1.Items[s1].ToString(); bölümünde " renk" string değeri bu koda bağlı ama "s1" değeri nereden geliyor anlayamadım. yani " renk" değeri ve "s1" değişkeni de hata veriyor.
Teşekkür ederim
Sibel Hanım, Teşekkürler
Belirttiğiniz noktaları düzelttim.