none
c# Textbox hakkında RRS feed

  • Soru

  • merhaba textboxa girilen değeri ilk harfler büyük şeklinde bir metot hazırladım changed veya leave özelliklerinde kullanıyorum

     public void ilkharfbuyuk(TextBox text)
            {
                var konum = text.SelectionStart;
                string veri = text.Text.ToLower();
                text.Text = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(veri);
                text.SelectionStart = konum;
            }
    çağırırkende ilkharfbuyuk(textbox1); şeklinde ilgili textboxun changed veya leave özelliğinde kullanıyorum buraya kadar normal fakat formda 10 textbox olunca hepsine tek tek yazmak yerine tüm textboxlara tek bir methotla işlem yaptırmak istiyorum bunu nasıl yaparım
    20 Eylül 2018 Perşembe 19:11

Yanıtlar

  • TextBox sınıfını baz alan yeni bir sınıf yazın. (Örneğin; OzelTextBox).

    İlk harfini büyük yapmak istediğiniz tüm TextBox'ları yeni yazdığınız OzelTextBox sınıfından türetin.

    İstediğinizi elde edeceksiniz.

            public class OzelTextBox : TextBox
            {
                public OzelTextBox(Point Nereye, int Genislik = 100) : base()
                {
                    Leave += UpcaseFirst;
                    Location = Nereye;
                    Width = Genislik;
                }
                private void UpcaseFirst(object sender, EventArgs e)
                {
                    if (!string.IsNullOrWhiteSpace(Text))
                        Text = $"{char.ToUpper(Text[0])}{Text.Substring(1)}";
                }
            }
    
            OzelTextBox textBox1;
    
            public Form1()
            {
                InitializeComponent();
                textBox1 = new OzelTextBox(new Point(100, 400), 200);
                Controls.Add(textBox1);
            }
    


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen tetee 21 Eylül 2018 Cuma 16:49
    21 Eylül 2018 Cuma 15:38

Tüm Yanıtlar

  • foreach(TextBox t in Controls.OfType<TextBox>()) {

     t.TextChanged += (s, evt) =>
                    {
                        var konum = t.SelectionStart;
                        string veri = t.Text.ToLower();
                        t.Text = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(veri);
                        t.SelectionStart = konum;
                    };

    t.Leave += (s, evt) => { var konum = t.SelectionStart; string veri = t.Text.ToLower(); t.Text = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(veri); t.SelectionStart = konum; }; }


    Hangi formda kullanacaksan oraya yerleştir.Controls ile form üzerinde bulunan herhangi türden bir nesneye ulaşabilirsin.

    Foreach ile tüm textboxlarda dolaşıp onların change ve  leave eventine senin kodu ekledim olay bu.



    20 Eylül 2018 Perşembe 20:24
  • foreach(TextBox t in Controls.OfType<TextBox>()) {

     t.TextChanged += (s, evt) =>
                    {
                        var konum = t.SelectionStart;
                        string veri = t.Text.ToLower();
                        t.Text = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(veri);
                        t.SelectionStart = konum;
                    };

    t.Leave += (s, evt) => { var konum = t.SelectionStart; string veri = t.Text.ToLower(); t.Text = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(veri); t.SelectionStart = konum; }; }


    Hangi formda kullanacaksan oraya yerleştir.Controls ile form üzerinde bulunan herhangi türden bir nesneye ulaşabilirsin.

    Foreach ile tüm textboxlarda dolaşıp onların change ve  leave eventine senin kodu ekledim olay bu.



    aslında istediğim tam olarak bu değil çünkü tüm textleri kullanmam gerekmeyebilir benim esas amacım textboxu yakalamak yanı textbox1 diye değil mesela sizin gösteriğniz  Controls.OfType<TextBox>() bunu döngü içinde değilde normal puplic class olarak nasıl yazarım
    21 Eylül 2018 Cuma 14:51
  • Foreach içinde textbox name ine göre de muamele yapabilirsin örneğin bir if-else koyarsın ismi textbox1 olan için bu fonksiyonu eklersin.

    Yada bir sınıf oluşturur bu sınıfa textbox sınıfını miras alırsın sonra miras aldığın sınıftan nesne yaratırken eventleri doldurursun.Yada sınıf içerisinde eventleri override edersin.

    Sana attığım kodda tüm textboxları dolaşıyorsun hangi textboxlara bunu uygulayacağınada döngü içine bir if-else switch case vs koyarak da karar verebilirsin.

    21 Eylül 2018 Cuma 15:05
  • TextBox sınıfını baz alan yeni bir sınıf yazın. (Örneğin; OzelTextBox).

    İlk harfini büyük yapmak istediğiniz tüm TextBox'ları yeni yazdığınız OzelTextBox sınıfından türetin.

    İstediğinizi elde edeceksiniz.

            public class OzelTextBox : TextBox
            {
                public OzelTextBox(Point Nereye, int Genislik = 100) : base()
                {
                    Leave += UpcaseFirst;
                    Location = Nereye;
                    Width = Genislik;
                }
                private void UpcaseFirst(object sender, EventArgs e)
                {
                    if (!string.IsNullOrWhiteSpace(Text))
                        Text = $"{char.ToUpper(Text[0])}{Text.Substring(1)}";
                }
            }
    
            OzelTextBox textBox1;
    
            public Form1()
            {
                InitializeComponent();
                textBox1 = new OzelTextBox(new Point(100, 400), 200);
                Controls.Add(textBox1);
            }
    


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen tetee 21 Eylül 2018 Cuma 16:49
    21 Eylül 2018 Cuma 15:38
  • işte sınıf oluşturup textboxları yakalamam lazım bunu nasıl yaparım onu bulmaya çalışıyorum aslında sorun bende tam izah edemiyorum :( şöyle söyleyeyim 

     public void ilkharfbuyuk(TextBox text)
            {
                var konum = text.SelectionStart;
                string veri = text.Text.ToLower();
                text.Text = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(veri);
                text.SelectionStart = konum;
            }

     private void textHesapAdi_Leave(object sender, EventArgs e)
            {
                ilkharbuyuk(textHesapAdi);// burada textthesapadi olsun istemiyorum
            }

    private void ilkharfdegisekler_Leave(object sender, EventArgs e)

    {

    ilkharfbuyuk(buraya öyle bir kod yazmam lazımki bu eventi diğer istediğim texboxlara eklediğim zaman clasım çalışsın

    veya buraya uyacak şekilde yukarıdaki sınıfı düzenyeyim

    }


    21 Eylül 2018 Cuma 15:48
  • murat bey teşekkür ederim
    21 Eylül 2018 Cuma 16:49