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

Yağız Gönüler tarafından yayınlanmıştır 13. Ağustos 2008 12:27
 

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.

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Software | Articles | Windows

Yorum ekle


(Gravatar simgesini gösterecek)  

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.
Sitedeki kod ve tasarım değişiklikleri ise Yağız Gönüler tarafından geliştirilmiştir.
2008 © www.yagizgonuler.com

Şifahen değil acilen!

Anket

Yazılım geliştirirken en keyif aldığınız alan hangisi?




Sonuçlar

Son Yorumlar

Comment RSS

Calendar

<<  Ocak 2009  >>
PaSaÇaPeCuCuPa
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

Yazıları geniş takvimde göster

Ne Dinliyorum?

Kirpi - TearDrop (7 saat önce)
Kirpi - My Name Is Kirpi (7 saat önce)
Kirpi - The Song (7 saat önce)
Kirpi - Spell (8 saat önce)
Huseyin Karadayi - Bonus Track Funk Clarinet (String Mix) (8 saat önce)
Huseyin Karadayi - Sacred Gate (8 saat önce)
Huseyin Karadayi - Exotica (8 saat önce)
Huseyin Karadayi - Take Me Away / No Time To Waste (Vocal By Melis Sökmen) (8 saat önce)
Huseyin Karadayi - Eyes Don't Lie (Duet By Enoi & Funky C) (8 saat önce)
Huseyin Karadayi - This Way (Usy Groove) (8 saat önce)

Ne Okuyorum?


Haftanın Sözü


"Sukûnetim asaletimdendir;
Lâkin her lâfa verilecek bir cevabım var.
Bir bakarım lâf lâfmı diye,
Birde bakarım söyleyen adammı diye.."

Mevlânâ Celaleddin-i Belhi Rumi
(1207-1273)

Adanmış Hayatlar

"Zaten aşklar hep yalan dolan,
Sonu hep acı hüsran.
Bize her sevdadan geriye kalan
Sadece Galatasaray..
"

Son Dakika

İstanbul'da Hava

ISTANBUL

Ziyaretçi Sayısı

Ziyaretçi Sayısı