Yazılımsal TextBox ekleme sorunu!

Başlatan ziyaretci, 25 Temmuz 2014, 00:56:49

ziyaretci

Merhaba, yazılımsal olarak aşağıdaki kodlar ile textbox ekliyorum. Fakat el ile eklerken ki gibi nasıl isimlendirebilirim? Ve isimlendirdikten sonra derleyiciden bu ismi nasıl alabilirim?
 
Aşağıdaki kodlar otomatik olarak isim atıyor olabilir (textbox1 , ..2 , ..3 vs.) fakat program çalıştıktan sonra text box eklendiği için derlemeden önce isim olarak çağıramıyorum. 

Yardımcı olursanız C# 'da bir adım daha ileriye gitmiş olacağım.

TextBox textbox = new TextBox();
                    textbox.Top = satir;
                    textbox.Left = sutun;
                    textbox.Width = 100;
                    textbox.Height = 20;
                  
                    textbox.Text = "";
                    this.Controls.Add(textbox);

ArifAhmet

İsim olarak çağıramıyorsanız, tanımlamadan sonraki satırları nasıl yazdınız, kod tamamlama özelliğini kullanmadınızmı? Normalde görünmesi gerekiyor. Fakat tanımladığınız alanda önemli.
Yaşasın Open Source!

mir_as82

Hocam tam hatirlamamak ile birlikte c# ta şu mantik vardi. Application.run dan sonra kontrol form.designer a birakiliyor sen kontrolünü o kodun içinde yazabilirsin. Veya kod yürütülürken run time da form unun içine o kontrolü bekleyebilirsin. Ama ekleme işi form içine olmali.

Salih

Delphi'de name özelliği var. Mantık aynı olduğuna name özelliğine atama yapabilmeniz gerekir.

barisertekin

TextBox txt= new TextBox();
txt.ID = "txtAdi";
this.Controls.Add(txt);

Bu kontrolü find ederek bulabilirsin. Fakat global tanımladıysan zaten txt.Text = "bla bla"; şeklinde kullanabilirsin.

FindControl

TextBox txtABC = (TextBox)this.FindControl("txtAdi");
txtABC.Text = "ZXC";

ziyaretci

Alıntı yapılan: ArifAhmet - 25 Temmuz 2014, 01:12:57
İsim olarak çağıramıyorsanız, tanımlamadan sonraki satırları nasıl yazdınız, kod tamamlama özelliğini kullanmadınızmı? Normalde görünmesi gerekiyor. Fakat tanımladığınız alanda önemli.

Bende yeniyim c# ' örnek verirseniz çok memnun kalırım.

Alıntı yapılan: mir_as82 - 25 Temmuz 2014, 01:21:16
Hocam tam hatirlamamak ile birlikte c# ta şu mantik vardi. Application.run dan sonra kontrol form.designer a birakiliyor sen kontrolünü o kodun içinde yazabilirsin. Veya kod yürütülürken run time da form unun içine o kontrolü bekleyebilirsin. Ama ekleme işi form içine olmali.

Peki araştıracağım.

Alıntı yapılan: barisertekin - 25 Temmuz 2014, 01:41:39
TextBox txt= new TextBox();
txt.ID = "txtAdi";
this.Controls.Add(txt);

Bu kontrolü find ederek bulabilirsin. Fakat global tanımladıysan zaten txt.Text = "bla bla"; şeklinde kullanabilirsin.

FindControl

TextBox txtABC = (TextBox)this.FindControl("txtAdi");
txtABC.Text = "ZXC";

Denedikten sonra dönüş yapacağım. Cevaplar için teşekkürler.

ArifAhmet

Normal yolla eklediğiniz form üyeleri, tam hatılamıyorum (designer.cs olabilir) gibi bir yerde saklanıyor. Oradan örneklerine bakabilirsiniz. Hatta orada tanımlama yapabilirsiniz. Form üyeleri sizin kaynak kodunuzda initializecomponent(); çağırılarak ekleniyor.
Yaşasın Open Source!

ziyaretci

#7
Fakat ben herhangi bir değişken veya dizi ile text box eklemek istiyorum, diyelim ki aşağıdaki textbox oluşturma koduna for ekledim. Tamam program çalışırken isimleride kendim belirledim. Ama derlemeden ben, değişken ile oluşturduğum isimleri nasıl çekerim. Misal;

Aşağıda 4 adet textbox oluşturdum. Bir adet button1 olsun. Butona bastığımda "text_adet03" nasıl okurum, derlemeden. Sıkıntım bu.

Öyle bir metod olsun ki;
int say=0;
"okundu  =  "text_adet03". ToString(); // bu dizini programda yazdım. Hata oluşmadı.  Sonuç alabilir miyim?

for (i = 0; i < 4; i++)
                {
                    

                    TextBox textbox= new TextBox();
                    textbox.Top = satir;
                    textbox.Left = sutun;
                    textbox.Width = 100;
                    textbox.Height = 20;
                    textbox.Name = "text_adet" + say+ i;
                    textbox.Text = "";
                    this.Controls.Add(textbox);

                    sutun += 106;

                }






ArifAhmet

#8
Sen zaten şuan sadece bir tane textbox oluşturuyorsun. Her döngüde ismi değişiyor.

okundu  =  "text_adet03". ToString(); burada zaten okundu değişkenine "text_adet03" stringini atamışsın. Bi daha stringe dönüştürmen gereksiz.

mesaj birleştirme:: 26 Temmuz 2014, 01:25:18

Anladığım kadarıyla siz program çalışırken eleman eklemek istiyorsunuz ama bu imkansız diye biliyorum çünkü siz o elemanı ekleyince onun derlenmesi gerekiyor.
Yaşasın Open Source!

ziyaretci

İmkansız değil ekleyebiliyoruz. Ben program çalışırken ekleyip(burada sorun yok), programı derlemeden ekleyeceğim textbox un yapacağı işlevi ayarlamak istiyorum.

Ve program çalışırken değişkende yer alan isme bağlı olarak ekleyeceğim. Sıkıntım, eklenmeden önce programa nasıl değişkenli textbox kesmesi ekleyebilirim?