C# Form Çoklu Dil Desteği

Yerelleştirme diye tabir edilen uygulamanın birden çok dili desteklemesi, uygulamanın başarısını etkileyen faktörlerden biridir.

Aşağıdaki videomuzda C# form uygulamamıza çoklu dil desteğini nasıl sağlayacağımızı ve kullanıcının seçimine göre programın dilini ayarlayacağımızı işliyoruz.




C# Eklenti (Plugin) Destekli Yazılım Geliştirme

Yazılım geliştirilirken göz önünde bulundurulması gereken konulardan biri de uygulamanın geliştirilebilir olması ve bağımsız geliştiricilerin uygulamaya katkılarına destek sağlanması konusudur.

Bu tür uygulamalara en güzel örnekler internet tarayıcıların eklenti desteği ile vardıkları mükemmel özelliklerdir. C# dilinde de bu destek kolaylıkla, geliştirilen uygulamalara eklenebilir. Eklenti (Plugin) desteğinin uygulamaya nasıl eklendiğini öğrenmek için aşağıdaki videoya göz atabilirsiniz.




C# User Control Nedir ve Nasıl Oluşturulur

Windows form veya web form geliştirirken çoğu zaman .Net standart kütüphanesi ile gelen kontroller (buton, textbox vs.) yeterli olsa da özellikle projede geliştirilen sınıflara özgü görsel kontrol geliştirme gerekmektedir. Bu durumlarda User Control dediğimiz konu devreye girmektedir.

Örneğin bir sınav uygulaması geliştirilecek, bunun için en temel sınıfımız Soru sınıfı olacak. Soru sınıfına ait temel özellikle ise şunlar olacaktır.

  • Soru metni
  • Cevap şıkları (A,B,C,D,E)
  • Doğru cevap
  • Kullanıcının soruya verdiği cevap

Bu durumda 20 soruluk bir test için 20 tane metin alanı, 5 şıktan 20 soru için 100 radiobutton vs. kontrol eklenmesi gerekecektir. Tabi bütün bunları kontrol edecek kodlar. Bir sürü iş yani 🙂 Bütün bu kargaşa yerine yapılabilecek çözüm soru sınıfı için bir user control oluşturmak ve bir soru için gereken tasarımı yaptıktan ve ilgili kodları yazdıktan sonra her soru için bunu kullanmak.

Aşağıdaki videomuzda user controlun nasıl tanımlandığını ve kullanımı ile ilgili ayrıntılı bilgi bulabilirsiniz.




C# Forma Kısayol Ekleme

Yazılım geliştirilirken göz önünde bulundurulması gereken noktalardan biri de kullanıcı deneyimidir. Kullanıcı deneyiminde de ilk sırada efektif olarak oluşturulmuş kısa yollardır.

Form üzerinde kısayol tanımlanabilmesi için formun KeyPreview özelliğinin True olarak ayarlanmış olması gerekmektedir.

Bu özelliğin ayarlanmasından sonra forma ait KeyDown olayının (Event) ayarlanması gerekmektedir. Parametrede yer alan KeyEventArgs parametresi basılan tuşlara ait bilgileri tutmaktadır.

Örnek 1:

private void MyForm_KeyDown(object sender, KeyEventArgs e)
{
 if(e.Modifiers == Keys.Control && e.KeyCode == Keys.N)
 {
 // (Ctrl+N) tuşlarına basıldığında yapılması istenen işlemler
 }
}

Örnek 2:

private void MyForm_KeyDown(object sender, KeyEventArgs e)
{
 if (e.Control && e.Shift && e.KeyCode == Keys.O)
 {
 // Ctrl+Shft+O tuşlarına basıldığında yapılması istenen işlemler
 }
}

Aşağıdaki videodan konuyu daha ayrıntılı inceleyebilirsiniz.




C# Çoklu Form Uygulamaları ve Formlar Arası Veri Alış Verişi

Geliştirilen uygulamaların nerede ise tamamında birden fazla ekran kullanılmaktadır. Bu yazımızda birden fazla ekran içeren uygulamalarda ekranların beraber kullanılması ve ekranlar arası veri alış verişini inceleyeceğiz.

Bir ekranda iken ikinci bir ekranı açmak için iki metot bulunmaktadır. Bu metotlar ve açıklamaları;

  • [Form].Show() : Açılacak form açıldıktan sonra ana form kullanılmaya devam edilebilir şekilde açılır.
  • [Form].ShowDialog(): Açılacak form, açıldıktan sonra ana form kullanılamaz. Açılan form kapandıktan sonra ana form kullanılabilir. Kullanıcıya soru sorulacağı zaman çoğunlukla kullanılır. Bununla ilgili MessageBox yazımızı inceleyebilirsiniz.

İki metotta da öncelikle açılacak formu bir örneği oluşturulduktan sonra ihtiyaca göre Show veya ShowDialog metotları ile form açılır.

Form form1 = new Form1();
form1.Show();

Aşağıdaki videomuzda çoklu form uygulamaları ve formlar arası veri alış veriş yöntemlerini ayrıntılı şekilde bulabilirsiniz.




MDI Form ve Tabbed Page MDI Nasıl Yapılır?

MDI form kısa tanımı, iç içe form olarak yapılabilir. C# Windows Form çalışmalarında birden fazla ekranla çalışmalarda açılan ikinci, üçüncü vs. formların ana formdan bağımsız açılması yerine ana formun içinde açılmasını sağlayan yapıdır.

Formları içinde barındıracak olan ana form MDIParent, ana form içinde açılan formlara da MDIChild ismi verilir. Açılan her bir MDIChild, MDIParent formunun MDIChildren koleksiyonunda tutulur.

MDI form yapılırken yapılan işlemler şöyledir:

  • MDIParent olarak kullanılacak olan ana formun IsMdiContainer özelliği true olarak ayarlanır.
  • Ana form içinde açılacak olan child formun MdiParent özelliğine de this anahtar kelimesi ile ana forma bağlanır.
  • Child formu Show() metodu ile form açılır.

Projenin kodlarına aşağıdaki GitHub linkinden ulaşabilirsiniz:

https://github.com/saitorhan/StudyingMdiForms

Uygulama Videosu




Hesap Makinesi

Programın temel özellikleri:

  • Yapılan işlem dizisinin tarihçesini tutar
  • Tutulan işlem tarihçesini txt dosyasına çıktı alabilir
  • txt dosyasına çıktı alınan işlem tarihçesini programa alıp hatalı işlem kontrolü sağlar

Programın kodlarını https://github.com/saitorhan/HesapMakinesi adresinden alabilirsiniz.




CustomTextBox User Control

C# ile yazılan projelerde ihtiyaç duyulan en önemli kontrollerden biri de sadece rakam veya harf kabul eden TextBox’tır. Bu projede user kontrolün özelliği olan  DataType özelliğine göre sadece rakam, harf veya sadece ikisini kabul eden textbox örneği yer almaktadır.

Projeye aşağıdaki linkten ulaşabilirsiniz:

https://github.com/saitorhan/CustomTextBox




MessageBox Örnekleri

 MessageBox.Show metodu çoğu zaman bir programcının en büyük yardımcısı olabilmektedir. Bir işlem sonunda işlemin sonucu hakkında bilgi vermek, oluşan hataları ekranda göstermek, silme veya güncelleme işlemi öncesinde kullanıcıdan son onay alma işlemlerinde yegane çözüm kaynağıdır.

Aşağıda MessageBox hakkında çeşitli örnekler bulunuyor. Yararlı olması dileğiyle, örneklerimize başlayalım:

Örnek 1.

 Sadece tek parametre ile çağrılabilir. Bu durumda verilen masajı “Tamam” butonu ile ekrana yazar.

 

Örnek 2.

İkinci çağırma şeklimiz, iki parametreli çağırmadır. Bu varyasyonda ilk parametre mesaj, ikinci parametremiz de mesaja yazılacak başlığı belirtmektedir. Gene aynı şekilde “Tamam” butonuyla göstermektedir.

Örnek 3.
Üçüncü çağırma şeklimiz ise üç parametreli çağırmadır. Üçüncü parametremiz gösterilecek mesaj kutusuna hangi butonların gösterileceğini ifade eder. Parametre türümüz MessageBoxButtons Enum setindendir.

MessageBox.Show metodu DialogResult türünde bir cevap döner. Bu cevap içerisinde kullanıcının hangi butona tıkladığı bilgisi vardır. Dönen sonuca göre program akışında gerekli yönlendirme yapılabilir.

Örnek 4.

Dördüncü çağırma şeklimiz ise dört parametreli çağırmadır. Bu örnekte ki dördüncü parametremiz ise açılan mesaj kutusuna ikon eklemek için kullanılır. Parametre MessageBoxIcon Enum setindendir.

Örnek 5.

Beşinci çağırma şeklimiz ise beş parametreli çağırmadı. Bu örnekteki beşinci parametremiz ise açılan mesaj kutusunda gösterilen butonlardan kaçıncı sıradakinin varsayılan buton olacağını belirtir. Parametremiz MessageBoxDefaultButton Enum setindendir. Buton numarasını soldan sağa doğru sayar.

 

 




Devexpress Wait Form Programatik Olarak Açıklama ve Başlık Değiştirme

Merhabalar,

 Devexpress içerisinde işlemin arka planda devam ettiği süre içerisinde ekranda tutmak üzere gayet kullanışlı bir form bulunmaktadır: Wait Form.

Wait Form’u kullanışlı kılan özelliklerinin başında arka planda ne işlemin yapıldığını kullanıcıya göstermek için başlık ve açıklama adında iki özelliğinin olmasıdır. Ardı ardın adevam eden farklı işlemleri kullanıcıya haber vermek için form üzerindeki başlık ve açıklama alanlarını güncellemek gerekebilmektedir.

Başlık ve açıklama bilgisini güncellemek için kullanacağımız kod aşağıdaki gibidir:

[cshar]

SplashScreenManager.Default.SetWaitFormCaption(caption);
SplashScreenManager.Default.SetWaitFormDescription(description);

[/cshar]