C# .Net ' Te Obje Dizisine Erişmek
-
Örneğin 10 tane textbox ım var
ben
for(a=1;a<=10;a++){
textbox[a].text="";
}
gibi array şeklinde objelere ulaşmak istiyorum bunun mümkünatı var mı ?
-
foreach i controllerde dönderip isimleri eşleştirip alabilirsin sanırımvs2008 kuruyorum deneyip söylerim hatırlarsam
-
arkadaşında dediği gibi,foreachle tüm kontrollerde dönüp name ile eşleştirip alabilirsin.
bir diğer yolda,kontrolleri panelin içine atıp o panelde findcontrol metoduyla eşleştirebilirsin.
-
foreach (Control c in parent.Controls) {
if (c.GetType() == typeof(TextBox)) {
((TextBox)(c)).Text = string.Empty;
tb.Focus();
}} -
windows uygulaması mı web uygulaması mı onu bilmek gerek
web se :
foreach (TextBox tb in Page.Controls.OfType<TextBox>())
{
tb.Text = "";
}şeklinde formdaki textboxlarda dolaşabilirsin. windows sa Page yerine Form yazman yeterli olacaktır.
extension metodlarda cast metodu o tipe cast edebiliyorsa alıyor.
edit: çok özür diliyorum. OfType metodu yapıyordu dediklerimi doğru halini tekrardan yazdım.
-
veya kodlarla textbox ı oluşturuyorsan kontrolleri gonderirken bi dizi oluşturup bu dızının ıcıne textboxları koyabılırsın.
-
foreach (Control x in Page.Form.Controls)
if (x is TextBox)
((TextBox)x).Text = "alikadir";
asp.net için örnek ama desktop da da fark yok burda önemli nokta bu textbox kontrolleri hangi kontrol altına yerleşiyo
.net de bazı kontrol modelleri içerisine kontrol alabiliyo örnek panel, placeholder, form, page, mesela biz panel1.visible=false; dediğimizde panelin içindeki kontroller de render edilmiyo ve clienta göderilmiyo gibi güzellikler yapılması için böyle bi hiyerarşi kullanılmış kontrol olayında hem karmaşada olmuyo :)kodu incelersek x pointerı içerisinde bi kontrol var ama bu ne kontrolü belli değil bunun için önce textbox olup olmadığına bakıyoruz
if (x is TextBox)
çünkü Control veya WebControl base classını referans almış olan nesneler base classına göre container da tutuluyo yani
Page.Form.Controls
ile bize gelen nesneler unboxing li olarak container da tutuluyo biz bunları önce hangi kalıba uyduğunu yani textbox mı olduğuna bakıyoruz sonra da
((TextBox)x).Text = "alikadir";
diyerek x pointerının hedefindeki objeyi(kontrolü) boxing yapıp gereken işlemlerimizi yapıyoruz...
sanki anlatamadım gibi geldi ama durum bu :) düşündüklerimi yazıya dökemiyorum galiba :P -
cevap veren herkese teşekkür ederim birazdan deneyeceğim verdiğiniz örnekleri.
