Cancellare contenuto TextBox in Form MdiChild

martedì 23 giugno 2009 - 19.28

sanfra Profilo | Junior Member

salve, rieccomi con un nuovo e strano problema, io dovrei cancellare il contenuto di alcuni TextBox in una Form MDIChild e utilizzo questa sintassi

for (int i = 0; i < this.Controls.Count; i++) { if (this.Controls[i] is TextBox) { this.Controls[i].Text = ""; } else if(this.Controls[i] is RadioButton) { ((RadioButton)this.Controls[i]).Checked = false; } }

però l'unica cosa che vede sono i due button che si trovano all'interno della form.

Ho provato a scrivere

Form tempChild = this.ActiveMdiChild;
e poi il resto del codice sopra descritto, e mi dà null la variabile tempChild.

Potreste aiutarmi?

Grazie

Jeremy Profilo | Guru

Ciao Francesco.
Fammi capire.....
Per caso c'è di mezzo un groupbox o qualche altro contenitore???? tipo un tabcontrol????
Facci sapere...
Ciao

sanfra Profilo | Junior Member

Ciao, si c'è un groupbox, e null'altro,
ma quando vado a fare il debug,inserendo un breakpoint nella funzione che è situata all'interno della form in questione,nel punto dove conta gli elementi all'interno del form, me ne dà soltanto due che corrispondono precisamente ai duw pulsanti(button)ma i Textbox non li vede.


Grazie ancora per il tuo intervento.

Jeremy Profilo | Guru

Ciao Francesco.
Non li vede perchè fanno parte della Collection di controlli del GroupBox... non del form.
Il tuo codice andrebbe modificato così:

foreach (Control cnt in groupbox1.Controls) { if (cnt is TextBox) { cnt.Text = ""; } else if (cnt is RadioButton) { ((RadioButton)cnt).Checked = false; }

con gli opportuni aggiustamenti del caso.

Facci sapere...
Ciao

sanfra Profilo | Junior Member

Ciao, forse non mi sono spiegato molto bene, e ti chiedo scusa, ma i TextBox sono fuori dal GroupBox che contiene due radio button e in effetti, i textbox non li vede proprio,mentre i radio button con la tua formula adesso me li vede.


Jeremy Profilo | Guru

Ciao Francesco
>con gli opportuni aggiustamenti del caso.
con questa frase intendevo dire che avresti dovuto adattare il mio codice al tuo quindi:

foreach (Control cnt in this.Controls) { if (cnt is TextBox) { cnt.Text = ""; } else if (cnt is GroupBox) { foreach (Control groupcnt in cnt.Controls) { if (groupcnt is RadioButton) { ((RadioButton)groupcnt).Checked=false; } } } }

questa dovrebbe essere completa.....
Facci sapere..
Ciao

sanfra Profilo | Junior Member

già fatto, ma niente non va!



Inoltre volevo aggiungere, che in questo modo non vede neppure il controllo GroupBox e mi salta fuori dai due cicli


Jeremy Profilo | Guru

Sicuro????
Io lo ho provato e funziona ..... ti posto il progettino di esempio, così puoi verificare.

Facci sapere...
Ciao

sanfra Profilo | Junior Member

ciao Jeremy, anche io avevo fatto la prova su un form normale, e funzionava, ma su un form Mdichild, non va, per quanto mi riguarda si tratta di una quetsione di finestre mdichild secondo me.

Caso mai continuo a sbattere la testa e vedere se è veramente un problema di mdichild.

sanfra Profilo | Junior Member

Ho risolto, chiedo scusa per la mia stupidità e non concentrazione sul problema(perchè è solo questo) itextbox compreso il group box erano all'interno di un panel

Scusate ancora, adesso mi funziona il tutto!


Jeremy Profilo | Guru

>ciao Jeremy, anche io avevo fatto la prova su un form normale,
>e funzionava, ma su un form Mdichild, non va, per quanto mi riguarda
>si tratta di una quetsione di finestre mdichild secondo me.
Ma i controlli dove sono posizionati???
Nel Form Figlio???
Allora è sufficiente sostituire
this.controls

con l'istanza del form figlio

FormFiglio.controls

Facci sapere...
Ciao


[edit]
OK ... tieni comunque presente quanto ho scritto in questo post
[edit]
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5