1. Ana Sayfa
  2. C Sharp

C# Sanal Klayve Yapımı – Virtual Keyboard

C# Sanal Klayve Yapımı – Virtual Keyboard
+ - 2

Merhabalar, C# Sanal Klayve Yapımı – Virtual Keyboard dersim ile C# eğitim setime devam ediyorum.  Bu dersi yapmak istedim çünkü windows tablete yazdığım bir uygulamada lazım oldu. Durum böyle olunca dersini de eklemek istedim. Zahmetli gibi görünse de aslında neredeyse hiç zahmetli değil. Tabi işimizi biliyorsak. Şimdi gelin C# Sanal Klayve Yapımı – Virtual Keyboard nasıl oluyormuş görelim.

C# Sanal Klayve Yapımı

Öncelikle belirtmeliyim ki bu basit bir klavyedir. Yani tuş kombinasyonları (CTRL, SHIFT) yer almıyor. Sadece Capslock tuşunun fonksiyonu var.  Özel karakterler ayrı tuşlar olarak yer alıyor.

Kafanızda bir klavye yapmak için o kadar butonun click eventi ile uğraşılmaz gibi bir şey düşünüyorsanız bu düşünceyi kafanızda çıkarmanızı tavsiye ediyorum çünkü bu yazıda böyle bir şey yok. Ne kadar basit olduğunu gördüğünüzde şaşırabilirsiniz bile. Capslock tuşunun fonksiyonunu çalıştırmak için gerekli kodlar, herhangi harf butonuna tıklandığında harfi textbox’a yazan kodların toplamından daha uzun. :D

Şimdi görelim nasıl yaptığımzı…

Form tasarımım aşağıdaki gibidir.

C# Sanal Klayve Yapımı

Şimdi kodlarımıza geçelim.

Capslock butonunun click eventi…

        bool CapsLock = true;
        private void btn_caps_Click(object sender, EventArgs e)
        {
            if (CapsLock)
            {
                CapsLock = false;
                lbl_bilgi.Text = lbl_bilgi.Text.ToLower();
            }
            else
            {
                CapsLock = true;
                lbl_bilgi.Text = lbl_bilgi.Text.ToUpper();
            }

            foreach (Button item in panel1.Controls)
            {
                if (CapsLock)
                    item.Text = item.Text.ToUpper();
                else
                    item.Text = item.Text.ToLower();
            }
        }

Burada söylemem gereken bir şey var. Yukarıdaki tasarımda, alt kısımdaki tüm butonlar bir panel içerisinde yer alıyor. Böyle yapmaz isek foreach döngüsünde InvalidCastException hatası alırız. Mesela, o panelin içerisine bir label koyarsak şöyle bir hata alırız.

”System.Windows.Forms.Label’ türündeki nesne ‘System.Windows.Forms.Button’ türüne atılamadı.’

Bu sebeple tüm butonları bir panel içerisinde alıyoruz ki foreach döngüsü kullanarka bütün butonların text’lerinde yazan harfleri büyütelim / küçültelim.

 

Sil butonunun click eventi…

        private void btnSil_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Length > 0)
            {
                textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1);
            }
        }

 

Buraya kadar bir sorunumuz yok. Buradan sonra bir buton click eventini kopyalıyoruz ve adını btn_Click olarak yazıyoruz. Aşağıdaki gibi…

   private void btn_Click(object sender, EventArgs e)
        {

        }

Sonrasında panel içine koyduğumzu bütün buttonları seçiyoruz ve Properties (Özellikler) kısmına gelerek event kısmına giriyoruz. Paneldeki bütün butonlar seçili iken Click eventi kısmına geliyoruz ve sağ taraftaki oka tıklayarak yukarıda verdiğimiz eventi seçiyoruz. Yani paneldeki 63 butona tek bir event veiyoruz.

Bu işlemi yaptıktan sonra eventimizi aşağıdaki gibi düzenliyoruz.

        private void btn_Click(object sender, EventArgs e)
        {
            Button b = (Button)sender;
            textBox1.Text = textBox1.Text + b.Text;
        }

Bu eventteki kodların ilk satırını açıklayalım. Burada, ilk satırda gördüğünüz Object sender, kısmından gelen objenin bir buton olduğunu söylüyoruz. Yani click eventi gerçekleştiğinde eventi gerçekleştiren nesne, Object sender kısmına geliyor. Bizde sender ile o objenin bir button olduğunu belirtiyoruz. Ardından textbox1’e harfleri yazıyoruz.


C# Sanal Klayve Yapımı – Virtual Keyboard, yazımda bu kadardı arkadaşlar. Diğer yazılarımızda görüşmek üzere…

C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.

Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz… Bu dersimde Github ‘da yerini almıştır. Linke tıklayarak Github sayfasına gidebilir ve indirebilirsiniz.

Sağlıcakla ve takipte kalın. ?

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)

Yorumlar (2)

  1. Hocam Merhaba,
    sade ve güzel anlatım için teşekkürler, bir sorum olacaktı,
    bu şekilde bir sanal klavye ile bir login ekranı tasarlamak isteseydik username ve pass textboxlarına giriş yapmayı yine yukarıdaki gibi mi yapacaktık, iyi günler teşekkürler.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.