2009-06-29 3 views
9

Ho iniziato a utilizzare questo molto per collegare elementi dell'interfaccia utente alla loro classe di supporto dati (qualunque cosa sia). Quali sono alcuni degli usi comuni per cui si utilizza la proprietà Tag?Utilizzi comuni per la proprietà Tag

In effetti, lo usi? So di non averlo fatto per molto tempo.

risposta

10

Proprio come si descrive, l'utilizzo più frequente della proprietà Tag che ho trovato e utilizzo sia in WinForms, sia in WPF e Silverlight è quello di indicare i dati reali a cui si riferisce il controllo. Ciò è particolarmente utile nelle istanze ListViewItem o nell'interfaccia utente generata automaticamente in cui si desidera utilizzare lo stesso gestore di eventi per più oggetti in cui solo i dati di destinazione sono diversi (ovvero l'azione da eseguire rimane la stessa).

Tuttavia, ho anche utilizzato lo Tag per archiviare un valore di enumerazione (sebbene sia consigliabile evitare i tipi di valore poiché causerebbe il pugilato quando si assegna il valore alla proprietà Tag) o una stringa che viene quindi utilizzata per determinare l'azione che deve essere eseguito al posto dei dati su cui eseguirlo, e in un particolare utilizzo, ho memorizzato un delegato in modo da poter generare automaticamente alcuni pulsanti e incorporare i loro gestori nello Tag (le informazioni del gestore sono state fornite in un dato guidato maniera).

Sono sicuro che ci sono molti altri modi per utilizzare Tag e molti altri modi per sostituire gli usi di Tag con qualcosa di più fortemente digitato, ma è così che l'ho usato.

+0

Un delegato? Suppongo che dovrebbe avere, ma non mi è mai nemmeno venuto in mente che anche i delegati siano oggetti. –

+0

Uso dei tag ListViewItem adesso: in una gerarchia di cartelle/file, utilizzo il Tag per memorizzare il percorso completo di un file, mentre l'intestazione mostra solo il nome. –

2

La proprietà Tag è un oggetto antico (in termini di linguaggio di programmazione) per i controlli. Per quanto ne so, è stato usato in tutto, dalla base visuale, dal delphi e praticamente da qualsiasi altro linguaggio basato su gui.

È semplicemente una proprietà aggiuntiva che consente di aggiungere un valore numerico per qualsiasi motivo che si desidera controllare.

L'ho visto utilizzato per tutto, da un contatore a un ID record a cui è collegato il controllo.

+0

Eviterei di memorizzare i tipi di valore in esso in quanto inserisce il valore. –

+0

In C#, non è un valore numerico, ma un oggetto. Invece di conservare un ID record, puoi tenere un riferimento al record attuale. –

3

È un po 'un gioco da ragazzi. Viene spesso utilizzato, ad esempio, in TreeView per collegare un nodo a un elemento dati.

Ma non lo userei troppo, poiché è molto pubblico e non molto flessibile. Nota che puoi quasi sempre usare un dizionario < Control, ValueType> e avere un controllo molto più in questo modo.

3

Lo uso sempre con ListViews e TreeView. Rende più facile trovare i dati sottostanti . In effetti, non sono sicuro di come rendere un'applicazione Winforms leggibile senza di essa.

Lo uso anche molto durante la creazione di ContextMenus in fase di esecuzione. Inserisco un oggetto nel membro Tag di ogni ToolStripMenuItem e quindi posso indicare il gestore di clic di ogni voce di menu con lo stesso metodo. Risulta molto meno codice.

Vorrei solo che non richiedesse così tanto casting.