方法 : TreeView コントロールまたは ListView コントロール (Windows フォーム) にカスタム情報を追加する
Windows フォームの TreeView コントロールに派生ノードを作成したり、ListView コントロールに派生アイテムを作成したりできます。 派生によって、必要な任意のフィールドを追加できます。また、追加するフィールドを操作するための、カスタム メソッドやカスタム コンストラクターを追加することもできます。 この機能の用途の 1 つに、各ツリー ノードまたはリスト項目への Customer オブジェクトの割り当てがあります。 ここでは TreeView コントロールでの例を示しますが、ListView コントロールの場合も同様に操作できます。
ツリー ノードを派生させるには
TreeNode クラスから派生を行って、ファイル パスを記録するためのカスタム フィールドを持つノード クラスを新規作成します。
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("\\")); } };
派生されたツリー ノードを使用するには
新しい派生ツリー ノードは、呼び出した関数に渡すパラメーターとして使用できます。
次の例では、テキスト ファイルの場所に対するパスとして My Documents フォルダーが設定されています。 これは、Windows オペレーティング システムを実行するコンピューターには、通常このディレクトリが存在すると考えられるためです。 また、ユーザーは最小限のシステム アクセス レベルでアプリケーションを安全に実行できます。
' 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")));
渡されたツリー ノードが TreeNode クラスに分類される場合は、派生クラスへのキャストを行う必要があります。 キャストとは、オブジェクトを他の型に明示的に変換することです。 キャストの詳細については、「暗黙の型変換と明示的な型変換 (Visual Basic)」 (Visual Basic の場合)、「() 演算子 (C# リファレンス)」 (Visual C# の場合)、または「Cast Operator: ()」 (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)); }