Technology Experience

Contenuti gestiti da Igor Damiani
posts - 949, comments - 2741, trackbacks - 15120

My Links

News

  • Questo blog si propone di raccogliere riflessioni, teoriche e pratiche, su tutto quello che riguarda il world-computing che mi sta attorno: programmazione in .NET, software attuale e futuro, notizie provenienti dal web, tecnologia in generale, open-source.

    L'idea è quella di lasciare una sorta di patrimonio personale, una raccolta di idee che un giorno potrebbe farmi sorridere, al pensiero di dov'ero e cosa stavo facendo.

    10/05/2005,
    Milano

Archives

Post Categories

Generale

Proprietà Tag dei controlli su Windows Forms

ecco una prima cosa che vorrei ricordarmi in futuro.
ho sempre trovato comoda la possibilità di poter aggiungere in una combobox non solo semplici stringhe di testo, ma interi oggetti anche complessi.
Cioè, scrivere qualcosa del tipo:

Me.ComboBox1.Items.Add(New FileInfo("C:\Autoexec.bat"))

Poi, ma non mi ricordo bene, fare l'overloading di ToString per mostrare a video quello che si vuole. Io ho bisogno di fare questa cosa anche per in una treeview, e ho visto che il metodo Add di Nodes accetta due cose: o stringhe o altri nodes.
Panic.

Sfogliando l'sdk, ecco la soluzione, che non so fino a che punto sia bella oppure no. La proprietà Tag di ogni singolo TreeNode può contenere qualsiasi Object, perciò ecco qui la soluzione...

Dim NodoTemp as TreeNode
NodoTemp = Me.trvElenco.Nodes.Add("C:\Autoexec.bat")
NodoTemp.Tag = New FileInfo("C:\Autoexec.bat")

A questo punto facendo CType(Me.trvElenco.SelectedNode.Tag, FileInfo) io posso accedere all'oggetto FileInfo inserito per quel TreeNode. Vado per deduzione (non ho controllato) dicendo che questo vale per tutti gli altri oggetti Windows Form che dispongono della proprietà Tag.

Altra soluzione, che ho appena provato, suggerita da Corrado Cavalli. Effettivamente basta creare una classe che eredita da TreeNode, più o meno così:

Imports System.IO
Public Class TreeNodeAvanzato
    Inherits System.Windows.Forms.TreeNode

    Public FileInfo As FileInfo
End Class

A questo punto io posso aggiungere alla collection Nodes della mia TreeView l'oggetto di tipo TreeNodeAvanzato e recuperarlo poi così:

Dim NodeSel As TreeNodeAvanzato
NodeSel = Me.trvElenco.SelectedNode
MessageBox.Show(NodeSel.FileInfo.FullName)

così è molto meglio, sicuramente. Grazie!

Print | posted on Monday, April 11, 2005 12:29 PM |

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET