Procedura: Aggiungere informazioni personalizzate a un controllo TreeView o ListView (Windows Form)
È possibile creare un nodo derivato in un controllo windows Form TreeView o un elemento derivato in un controllo ListView. La derivazione consente di aggiungere tutti i campi necessari, nonché metodi e costruttori personalizzati per gestirli. Un uso di questa funzionalità consiste nel collegare un oggetto Customer a ogni nodo dell'albero o elemento di elenco. Gli esempi riportati di seguito sono relativi a un controllo TreeView, ma lo stesso approccio può essere usato per un controllo ListView.
Per derivare un nodo dell'albero
Creare una nuova classe node, derivata dalla classe TreeNode, che dispone di un campo personalizzato per registrare un percorso di file.
Class myTreeNode Inherits TreeNode Public FilePath As String Sub New(ByVal fp As String) MyBase.New() FilePath = fp Me.Text = fp.Substring(fp.LastIndexOf("\")) End Sub End Class
class myTreeNode : TreeNode { public string FilePath; public myTreeNode(string fp) { FilePath = fp; this.Text = fp.Substring(fp.LastIndexOf("\\")); } }
ref class myTreeNode : public TreeNode { public: System::String ^ FilePath; myTreeNode(System::String ^ fp) { FilePath = fp; this->Text = fp->Substring(fp->LastIndexOf("\\")); } };
Per usare un nodo derivato dell'albero
È possibile utilizzare il nuovo nodo albero derivato come parametro per le funzioni.
Nell'esempio seguente il percorso impostato per il percorso del file di testo è la cartella Documenti personali. Questa operazione viene eseguita perché è possibile presupporre che la maggior parte dei computer che eseguono il sistema operativo Windows includerà questa directory. Ciò consente anche agli utenti con livelli di accesso minimi al sistema di eseguire l'applicazione in modo sicuro.
' You should replace the bold text file ' in the sample below with a text file of your own choosing. TreeView1.Nodes.Add(New myTreeNode (System.Environment.GetFolderPath _ (System.Environment.SpecialFolder.Personal) _ & "\ TextFile.txt ") )
// You should replace the bold text file // in the sample below with a text file of your own choosing. // Note the escape character used (@) when specifying the path. treeView1.Nodes.Add(new myTreeNode(System.Environment.GetFolderPath (System.Environment.SpecialFolder.Personal) + @"\TextFile.txt") );
// You should replace the bold text file // in the sample below with a text file of your own choosing. treeView1->Nodes->Add(new myTreeNode(String::Concat( System::Environment::GetFolderPath (System::Environment::SpecialFolder::Personal), "\\TextFile.txt")));
Se si passa il nodo della struttura ad albero e viene digitato come classe TreeNode, sarà necessario eseguire il cast alla classe derivata. Il casting è una conversione esplicita da un tipo di oggetto a un altro. Per ulteriori informazioni sul cast, consultare Conversioni implicite ed esplicite (Visual Basic), Cast e conversioni di tipo (Visual C#) o Operatore di cast: () (Visual C++).
Public Sub TreeView1_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect Dim mynode As myTreeNode mynode = CType(e.node, myTreeNode) MessageBox.Show("Node selected is " & mynode.filepath) End Sub
protected void treeView1_AfterSelect (object sender, System.Windows.Forms.TreeViewEventArgs e) { myTreeNode myNode = (myTreeNode)e.Node; MessageBox.Show("Node selected is " + myNode.FilePath); }
private: System::Void treeView1_AfterSelect(System::Object ^ sender, System::Windows::Forms::TreeViewEventArgs ^ e) { myTreeNode ^ myNode = safe_cast<myTreeNode^>(e->Node); MessageBox::Show(String::Concat("Node selected is ", myNode->FilePath)); }
Vedere anche
.NET Desktop feedback