Questo topic e' stato chiuso dal moderatore.
05/07/10 9:55
Neo1986
Buongiorno a tutti,
avrei bisogno di un piccolo aiuto, so che altre persone l'hanno già chiesto sul forum ma purtroppo non sono riuscito a trovare il termine giusto per la ricerca.
Ho 120 textbox, il name di queste è così composto :
TextBoxCom01
TextBoxCom02
TextBoxCom03
....
e così fino a 120.
Come posso fare per disabilitare tramite un for queste caselle di testo?
In pratica come posso utilizzare una stringa come nome di una textbox?
Esempio
For Indice = 1 to 120
Me.TextBoxCom + Indice.tostring.Enable = False
Next
Grazie
Ultima modifica effettuata da Neo1986 05/07/10 10:09
aaa
05/07/10 11:33
Neo1986
ho trovato qualche sito che spiega come mettere in pratica la tua teoria, ma secondo te... visto che io non ho bisogno di ricercare ma semplicemente scandire tutte le textbox e disabilitarle, è più veloce il tuo metodo o come dico io?
aaa
05/07/10 13:06
Neo1986
Ho risolto in un'altro modo, ricerco la checkbox tramite un comando apposito
'nome della checkbox da ricercare
Dim NomeCheckBox As String = ""
'controllo per la ricerca della checkbox all'interno della lista
'dei controlli inseriti nel form
Dim Controllo() As Control
'indice per la scansione delle checkbox
Dim Indice As Integer = 0
'scansione delle checkbox
For Indice = 1 To 32
'compongo il nome della checkbox da attivare
NomeCheckBox = "CheckBoxSensore" & Indice.ToString
'ricerco il nome della checkbox desiderata all'interno della lista dei controlli
Controllo = Me.Controls.Find(NomeCheckBox, True)
'controllo se la checkbox è stata trovata
if Controllo.Length > 0 Then
Trace.WriteLine("TROVATA!")
Else
Trace.WriteLine("NON TROVATA!")
End If
Next
Ultima modifica effettuata da Neo1986 05/07/10 13:07
aaa
05/07/10 13:07
HeDo
Postato originariamente da Neo1986:
dici ? completamente inventato?
ba... mi sembrava così semplice comporre il nome della textbox e con un for scandirle tutte... cmq ho provato come hai detto tu.... ma non capisco perchè non funziona
Praticamente, in un form ho un panel, con al suo interno tante groupbox, e all'interno di una di queste groupbox è situata la checkbox da controllare....
Con il codice che ti ho incollato, come controls vede solo le 32 groupbox e non il suo contenuto
ovvio, i controls sono gerarchici, devi fare una ricerca ricorsiva all'interno della collection controls, che più correttamente è un albero di controlli
private void ControlTextBoxes(System.Windows.Forms.Control.ControlCollection Container, string sMatchName, bool bEnable)
{
foreach (Control ctrl in Container)
{
if (ctrl is TextBox && ctrl.Name.Contains(sMatchName)) ctrl.Enabled = bEnable;
if (ctrl.Controls.Count != 0)
ControlTextBoxes(ctrl.Controls, sMatchName, bEnable);
}
}
e lo richiami tipo così:
ControlTextBoxes(this.Controls, "text", false);
è C# ma si converte facilmente in VB.NET
EDIT: ho visto ora il tuo post, considera che così gli fai fare ogni volta la scansione dei controlli, è abbastanza uno spreco
Ultima modifica effettuata da HeDo 05/07/10 13:08
aaa
05/07/10 13:55
walker93
si poteva usare anche la funzione ctype...
Ultima modifica effettuata da walker93 05/07/10 13:56
aaa