Bilet satış sistemlerinde gördüğümüz oturma düzenini C# ile program derlendikten sonra, dinamik olarak oluşturmak kolay bir şekilde tasarım yapılmasını sağlar.
Teker teker onlarca butonun yerleştirilip hizalanması, hepsine birer “name” değeri verilmesi, üstlerine sıra numaralarının yazılması gibi işlemler tercih edilmemesi gereken en kötü yoldur. Bunun yerine birkaç satır kod ile daha düzenli bir yerleşim sağlanabilir ve her butonun benzer şekilde çalışması sağlanabilir.
Salonun oturma düzeni, MultiLine özelliği aktif edilmiş bir TextBox nesnesi üzerinde klavye yardımıyla yapılacak tasarımın bir panel üzerinde dinamik olarak gerçekleştirilmesinden ibaret olacaktır. Yıldız (*) ile yaptığımız her işaret bir koltuğu ifade ederken salondaki boşluklar da boş bırakılarak ifade edilecek.
Oturma düzeninin yukarıdaki şekillerde ifade edilmesi, tasarımı daha da kolay hale getirmektedir. Düzgün bir tasarımı ortaya çıkarmak için tüm karakterlerin eşit genişlikte olduğu Courier New fontu seçilebilir.
Form görüntüsünde TextBox üzerinde klavye ile girilen desenin görüntüsü, sarı renge boyanmış bir Panel nesnesi üzerinde oluşturulmaktadır. Bu görüntüde her bir koltuk kırmızı ile oluşturulurken seçilen koltuklar da turkuvaz renge boyanmaktadır. OLUŞTUR butonuna basıldığında yazılması gereken kodlar aşağıdaki gibidir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | //Koltukların numaralandırılmasında kullanılacak int say=0; //Panel içeriği temizleniyor panel1.Controls.Clear(); //TextBox'taki satır (i) ve sütunlar (j) üzerinde hareket ediliyor for (int i=0;i<textBox1.Lines.Count();i++) { for (int j=0;j<textBox1.Lines[i].Count();j++) { string satir = textBox1.Lines[i]; //Satır üzerinde * karakteri oluşturulası gereken koltuk anlamındadır. if (satir[j]=='*') { //Nesne dinamik olarak oluşturuluyor Button nesne = new Button(); nesne.Name = "buton" + i; nesne.Text = (++say).ToString(); nesne.BackColor = Color.Red; nesne.Width = nesne.Height = 30; nesne.Left = 35 * j; nesne.Top = 35 * i; //Buton üzerine tıklandığında hangi metodun çalıştırılacağı belirtiliyor nesne.Click += koltukSecildi; //Oluşturulan buton nesnesi panel1 üzerine yerleştiriliyor panel1.Controls.Add(nesne); } } } |
Bu kod bloğunda her bir koltuk 30 piksel genişlik ve yüksekliğindedir. Her bir koltuk arasında 5 piksel boşluk bırakabilmek adına, dinamik olarak oluşturulan her bir nesne 35’in katları olacak şekilde yukarıdan ve soldan boşluğa sahip olarak panel nesnesine yerleştirilecektir. 35 değeri soldan boşluk vermek amacıyla j ile, yukarıdan boşluk vermek amacıyla da i ile çarpılmaktadır. i değişkeni satırları, j değişkeni de sütunları temsil etmektedir.
Koltuk üzerinde ilk tıklamada koltuğun seçildiği turkuvaz rengi almasıyla anlaşılıyor. Aynı koltuk üzerinde bir kez daha basıldığında koltuğun rengi eski hale, kırmızıya dönerek seçilen koltuk bırakılmış olmaktadır. koltukSecildi() metodu içine yazılan kod şu şekildedir:
1 2 3 4 5 6 7 8 9 10 | void koltukSecildi(object sender, EventArgs e) { Button btn = (Button)sender; if (btn.BackColor == Color.Red) btn.BackColor = Color.Aqua; else btn.BackColor = Color.Red; } |