C# CharacterCasing.Upper "ı" ve "i" sorunu

masker (93) 10 yıl önce sordu

Merhaba,

Bu soru defalarca sorulmuş, ben de defalarca aramışımdır. Fakat aradığım cevabı bir türlü bulamıyorum. Sorunu

textbox nesnesinin "editvaluechange" olayına 

textEdit1.Text = textEdit1.Text.ToUpper();
textEdit1.SelectionStart = textEdit1.Text.Length;

kodunu ekleyerek çözmekteyim. Fakat bu kodu her nesnenin olayına eklemek yerine projenin bir yerine ekleyip tüm Upper özellikli nesneler için geçerli kılma imkanımız var mı?

Microsoft'un sitesinde bir şey buldum ama pek anlayamadım. Bknz. Buradan

Toplam 2 cevap


masker (93) 10 yıl önce cevapladı

Sorunu ben bu şekilde çözdüm textBox1 nesnesinin KeyPress eventine aşşağıda ki kodu eklerseniz.. yazılarınızı direk büyük yazıyor.

 

if (e.Handled = !char.IsUpper(e.KeyChar) && !char.IsControl(e.KeyChar))
    {
           e.Handled = true;
           int SatirBaslangic = textBox1.SelectionStart;
           textBox1.Text = textBox1.Text.Insert(SatirBaslangic, e.KeyChar.ToString().ToUpper());
           textBox1.Select(SatirBaslangic + 1, 0);
   }

 

murat (12492) 10 yıl önce cevapladı

Merhaba,

Başlık ve soru farklı gibi geldi. Başlıkta sorduğunuz için:

Türkçe karakterlerdeki Uppercase sorunu. Yani küçük "i" harfi çevrildiğinde I olarak görünüyor. Çözüm için CultureInfo sınıfından yararlanabilirsiniz.

static void Main(string[] args)
        {
           
            string str1 = "uzmanım.net ile hayat çok güzel";
            string str2, str3;
            
            // Türkçe kültür ile
            str2 = str1.ToUpper(new CultureInfo("tr-TR", false));

            // İngilizce - ABD ile
            str3 = str1.ToUpper(new CultureInfo("en-US", false));
           
            Console.WriteLine(str2);
            Console.WriteLine(str3);
        
           
            Console.ReadLine();
        }

Diğer sorunuz için ise Custom textbox oluşturabilir ve tetiklemek istediğiniz olayın üzerine yazabilirsiniz.