Makale Özeti

Bu makalemde günümüzde birçok internet sitesinde kullanılan, bir textboxın üzerine gelindiğinde arka plan renginin nasıl değiştiğini göreceğiz. Bu yöntemle üzerinde bulunulan textboxların birçok niteliğini değiştirebilir, C#’ın ActiveControl özelliğinden faydalanabilirsiniz.

Makale

C# 2.0 ActiveControl özelliği ile Textbox Biçimlendirme

 

Bu makalemde günümüzde birçok internet sitesinde kullanılan, bir textboxın üzerine gelindiğinde arka plan renginin nasıl değiştiğini göreceğiz. Bu yöntemle üzerinde bulunulan textboxların birçok niteliğini değiştirebilir, C#’ın ActiveControl özelliğinden faydalanabilirsiniz.

 

Bildiğiniz gibi Windows formların üzerine yerleştirilen her nesne yada kontrole TabIndex özelliği sayesinde bir numara atayabiliriz. Programların çalışma esnasında Tab tuşu ile kontrollerimizin arasında gezinirken TabIndex değerine göre hareket edilir. Programın çalışma sırasında hangi kontrolün üzerinde bulunulduğunu öğrenmek isteyebiliriz. Bu durumda imdadımıza TabIndex ve ActiveControl yetişir.

 

Çalışma esnasında hangi nesne üzerinde bulunuyorsak o nesne, formun ActiveControl özelliğine aktarılmalıdır. Bu özelliğin ne gibi işlevlere sahip olduğunu görebilmek adına günümüzde internet sitelerinde –özellikle kayıt olma esnasında- çok sık rastladığımız bir durumu örneklendirmek istiyorum. Mesela bir siteye kayıt olurken çeşitli textboxların üzerinde geziniyorsunuz ve üzerine geldiğiniz textboxın bir anda arka plan rengi değişiyor. İşte bu olay tamamen C#’ın ActiveControl özelliği sayesinde gerçekleşiyor. Yine bu özelliği kullanarak sadece arka plan rengini değiştirmekle kalmaz, formlarınıza birçok yeni görsellik katabilirsiniz.

 

Önce aşağıda yer alan formu hazırlayalım. Yaptığımız işlem bir Windows formuna 3 adet textbox eklemekten ve bunların font rengini beyaz olarak ayarlamaktan ibaret.

 

 

 



Şimdi kod bölümümüze geçelim ve işe başlayalım. Öncelikle birkaç kısa bilgi aktarıp ondan sonra kod işlemlerine geçelim. Bu arada önceden belirtmek isterim ki, kendim visual studio.net 2005 ile kod yazarken, kod sayfası görselliğinde çeşitli değişiklikler yaptım. Arka plan rengim her daim siyahtır, parametre türleri turkuaz, sayılar kırmızı diğer değerler beyazdır. Copy paste yapacağım için yabancılık çekmemeniz adına bunu belirtmek istedim.

 

Her C# projesi için otomatik olarak Application nesnesi hazırlanmaktadır. Application nesnesinin çok sayıda metodu (DoEvents, Exit, Run, Restart), çok sayıda özelliği ve 6 olayı bulunmaktadır. ApplicationExit ve Idle bu olaylardan ikisidir.

 

Ne zaman Application nesnesi veya uygulama dahilinde bir işlem yapılsa Idle olayı meydana gelmektedir. Şimdi bu olaydan yararlanıp formdaki textboxlardan aktif olanın farklı bir arka plan rengine sahip olmasını sağlayacağım. Bu işlemi gerçekleştirebilmek için öncelikle bir Application_Idle() metodu hazırlıyorum.

 



  
private void Application_Idle(object sender, EventArgs e)

        {

            int sayi = this.Controls.Count;

            for (int i = 0; i < sayi; i++)

            {

                if (this.Controls[i] is TextBox)

                {

                    if (this.ActiveControl == this.Controls[i])

                        this.Controls[i].BackColor = Color.Blue;

                    else

                        this.Controls[i].BackColor = Color.White;

                }

            }

        }

 



Bu kısa kod parçacığını kısaca açıklamak gerekirse;

-         Öncelikle sayı türünden bir değişken belirledim ve formun üzerindeki kontrol sayısı kadar değer alacağını belirttim.

-         Daha sonra bir for döngüsü kurdum. İ değişkeninin alacağı değere göre işlem yapacağımı belirttim.

-         For döngüsü içerisine bir if döngüsü kurdum ve textboxlar ile i değişkenini ilişkilendirdim.

-         Daha sonra tekrar bir if döngüsü kurarak hangi textbox aktifse, onun arka plan rengini mavi yaptım. Ayrıca aktif textbox terk edilince tekrar eski arkaplan rengini yani beyazı almasını sağladım.

 

Uygulamamız içinde bir işlem yapıldığında, yukarıda yazdığım metodun işletilmesini sağlamak için yine otomatik olarak hazırlanan EventHandler nesnesinin yazdığımız metod hakkında bilgilendilmesi gerekir. Bu işlemi formun load() metodu içinde gerçekleştiriyorum.

 



  
private void Form1_Load(object sender, EventArgs e)

        {

            textBox1.ForeColor = Color.White;

            textBox2.ForeColor = Color.White;

            textBox3.ForeColor = Color.White;

            Application.Idle += new EventHandler(Application_Idle);

        }

 



Burada zaten yaptığımı önceden de yazmıştım. Textboxların font renklerini beyaz olarak belirtip, formun çalışmaya başlangıç anında Application_Idle metodunun aktif hale geçeceğini yukarıdaki koddan anlayabilirsiniz.

 

Şimdi formumuzu çalıştıralım ve bu yazdıklarımızdan çıkan sonucu görelim.

 

 



Görüldüğü üzere ilk textboxın üzerine gelir gelmez arka plan rengi değişiyor. Bu şekilde textbox yada diğer metin kontrollerinize birçok görsellik katabilirsiniz. Unutmayın Windows projelerinin işlevselliği kadar görselliği de çok önemlidir. Ayrıca bu sistem web projelerinde de çok kolay kullanılabilir.

 

Umarım faydalı ve değişik bir makale olmuştur.

 

C# ile kalın.


Yağız GÖNÜLER

yagizgonuler@gmail.com