none
textbox'ın ismindeki sıraya göre gizlemek RRS feed

  • Soru

  • merhaba arkadaşlar,

    girdiğim değer 10 ise;

    textbox1,textbox2,textbox3,textbox4,textbox5,textbox6.......textbox10 isimli textboxların görünümünü gizli yapacak bir döngü var mı acaba?

    teşekkürler...




    • Düzenleyen HakanDoğan 23 Kasım 2016 Çarşamba 16:45
    23 Kasım 2016 Çarşamba 16:45

Yanıtlar

  • Sanirim windows forms'dan bahsediyorsun:

    Yontem 1:

    int girdigimDeger = 10;
    
    for (int i = 1; i <= girdigimDeger; i++)
    {
      string name = string.Format("{0}{1}","textbox", i);
      var control = frm.Controls.OfType<TextBox>().SingleOrDefault( c => c.Name == name);
      if (control != null)
      {
        control.Visible = false;
      }
    }

    Yontem 2:

    for (int i = 1; i <= girdigimDeger; i++)
    {
    	string name = string.Format("{0}{1}", "textbox", i);
    	var control = frm.Controls[name] as TextBox;
    	if (control != null)
    	{
    		control.Visible = false;
    	}
    }
    
    (Baska yontemler de var ama gereksiz)

    23 Kasım 2016 Çarşamba 17:03
    Yanıtlayıcı
  • O zaman her seferinde hepsinin degerini false ya da true yap:

    int maxDeger = 16;
    int girilenDeger;
    int.TryParse(txtgörevsayısı.Text, out girilenDeger);
    
    for (int i = 1; i <= maxDeger; i++)
    {
      string name = string.Format("{0}{1}","textbox", i);
      var control = this.Controls[name] as TextBox;
      if (control != null)
      {
        control.Visible = (i <= girilenDeger);
      }
    }
    Not: if blogunda o sekilde {} kullanmamak zararli olabilir. Bu kodda tamamen sorunsuz, ve ozellikle eski C kullanicilari o sekilde yazar ancak yeni bir satir eklemen gerektiginde de kolay yapilabilecek bir hatanin nedeni. Hic olmazsa ayni satirda {} kullansan diye dusunuyorum (kisisel tercih sonucta).

    24 Kasım 2016 Perşembe 10:46
    Yanıtlayıcı

Tüm Yanıtlar

  • Sanirim windows forms'dan bahsediyorsun:

    Yontem 1:

    int girdigimDeger = 10;
    
    for (int i = 1; i <= girdigimDeger; i++)
    {
      string name = string.Format("{0}{1}","textbox", i);
      var control = frm.Controls.OfType<TextBox>().SingleOrDefault( c => c.Name == name);
      if (control != null)
      {
        control.Visible = false;
      }
    }

    Yontem 2:

    for (int i = 1; i <= girdigimDeger; i++)
    {
    	string name = string.Format("{0}{1}", "textbox", i);
    	var control = frm.Controls[name] as TextBox;
    	if (control != null)
    	{
    		control.Visible = false;
    	}
    }
    
    (Baska yontemler de var ama gereksiz)

    23 Kasım 2016 Çarşamba 17:03
    Yanıtlayıcı
  • Sanirim windows forms'dan bahsediyorsun:

    Yontem 1:

    int girdigimDeger = 10;
    
    for (int i = 1; i <= girdigimDeger; i++)
    {
      string name = string.Format("{0}{1}","textbox", i);
      var control = frm.Controls.OfType<TextBox>().SingleOrDefault( c => c.Name == name);
      if (control != null)
      {
        control.Visible = false;
      }
    }

    Yontem 2:

    for (int i = 1; i <= girdigimDeger; i++)
    {
    	string name = string.Format("{0}{1}", "textbox", i);
    	var control = frm.Controls[name] as TextBox;
    	if (control != null)
    	{
    		control.Visible = false;
    	}
    }
    (Baska yontemler de var ama gereksiz)

    cevap için teşekkürler.

    biraz yeniyim c# da. özür dilerim...

    var control = frm.Controls[name] as TextBox;

    bölümünde hata alıyorum.

    frm kısmına kendi forum adını da yazdım fakat yine aynı sonuç...

    23 Kasım 2016 Çarşamba 17:18
  • frm'yi tamamen kaldirabilirsin de. this de yazabilirsin. Sonucta senin formundaki kontroller. Eger formun adini dogru yazarsan calisir aslinda (var frm = new Form(); frm buradaki nesne adi).


    23 Kasım 2016 Çarşamba 17:27
    Yanıtlayıcı
  • teşekkürler. this yazınca oldu. :)

    ek bir sorum daha olacak.

    ben bu kodları timer içine attıyorum. toplam 16 adet textbox var.

    yeniden değer girdiğimde, değer ilk girdiğim değerden düşük ise sıkıntı oluyor. 

    yardımcı olur musunuz?

    24 Kasım 2016 Perşembe 06:55
  • Ne oluyor? Neyi cozmeye yardimci olmam gerektigini bilmem lazim :)
    24 Kasım 2016 Perşembe 10:20
    Yanıtlayıcı
  • Çok doğru :)

    ilk başta tüm textboxlarım gizlidir.

    ilk değerim 5 ise txt1-2-3-4-5 bunları görünür yapıyor.

    ikinci değerim 2 olduğunda yine aynı kalıyor. yani 1-2-3-4-5 yine görünür oluyor. sadece 1-2 görünür olmalı.

    for (int i = 1; i <= Convert.ToInt32(txtgörevsayısı.Text); i++)
                    {
                        string name = string.Format("{0}{1}", "txt", i);
                        var control = this.Controls[name] as TextBox;
                        if (control != null) control.Visible = true;
                    }

    teşekkürler.

     
    24 Kasım 2016 Perşembe 10:29
  • O zaman her seferinde hepsinin degerini false ya da true yap:

    int maxDeger = 16;
    int girilenDeger;
    int.TryParse(txtgörevsayısı.Text, out girilenDeger);
    
    for (int i = 1; i <= maxDeger; i++)
    {
      string name = string.Format("{0}{1}","textbox", i);
      var control = this.Controls[name] as TextBox;
      if (control != null)
      {
        control.Visible = (i <= girilenDeger);
      }
    }
    Not: if blogunda o sekilde {} kullanmamak zararli olabilir. Bu kodda tamamen sorunsuz, ve ozellikle eski C kullanicilari o sekilde yazar ancak yeni bir satir eklemen gerektiginde de kolay yapilabilecek bir hatanin nedeni. Hic olmazsa ayni satirda {} kullansan diye dusunuyorum (kisisel tercih sonucta).

    24 Kasım 2016 Perşembe 10:46
    Yanıtlayıcı
  • çok sağolun. elinize sağlık
    24 Kasım 2016 Perşembe 12:49