方法 : 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("\\"));
       }
    };
    

派生されたツリー ノードを使用するには

  1. 新しい派生ツリー ノードは、呼び出した関数に渡すパラメーターとして使用できます。

    次の例では、テキスト ファイルの場所に対するパスとして 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")));
    
  2. 渡されたツリー ノードが 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));
       }
    

参照

その他の技術情報

TreeView コントロール (Windows フォーム)

ListView コントロール (Windows フォーム)