2013-01-06 11 views
5

Ho bisogno di scoprire se il componente con qualche nome esiste nella forma corrente. Ho il nome del componente nella variabile stringa e se non esiste, ho bisogno di crearlo. Io uso questo codiceControllo esistente nella forma attuale?

Control c = Controls.Find(New, true)[0]; //najiti komponenty 

     if (c == null) {} 

ma mi dà errore che l'indice era al di fuori dei limiti della matrice. So che questo codice è cattivo, ma non so scriverlo bene e Google non mi aiuta.

risposta

6

Find metodo restituisce un array di controlli, ad esempio Control[]. Si sta tentando di accedere al primo elemento della matrice vuota, conseguente IndexOutOfRangeException Si dovrebbe provare:

Control[] controls = Controls.Find(New, true); 
if (controls.Length > 0) 
{ 
    //logic goes here 
} 
else 
{ 
    //no components where found 
} 
+0

questo mi dà questo errore: Impossibile convertire implicitamente il tipo 'System.Windows.Forms.Control []' a 'System.Windows.Forms.Control' – Crooker

+0

Siamo spiacenti, il mio errore , Ho aggiornato la risposta –

+0

Grazie, funziona bene. – Crooker

3

Prova usando l'Control.ContainsKey() Metodo (passa una variabile stringa containg il nome controllo anziché il testo citato nel mio esempio):

if (!this.Controls.ContainsKey("MyControlName")) 
{ 
    // Do Something 
} 
+0

un'altra bella opzione, +1 –

+0

Migliore opzione *. –

Problemi correlati