CLIのツリービューで、選択されているノードの子ノードの取得するには

解決


たもつ  2008-04-06 11:37:31  No: 67974

.NET2008です。

CLIのツリービューで、選択されているノードの子ノードの取得方法がわかりません。
MSDNで、TreeNodeのメンバを探すと、ChildNodesがあり、

現在のノードの第 1 レベルの子ノードを格納する TreeNodeCollection コレクションを取得します。

となっています。
しかし、具体的に、どのようにコーディングしたらいいのか分かりません。

TreeNode^ node = treeView1->SelectedNode;
textBox1->Text = node->ChildNodes->Text;

ですと、エラーになります。

また、取得できるのは「長男」というイメージだったのですが、MSDNを「くぐる」と、反復処理で一度に子を全部取得できるようなことも書いてありました。
そうしたことは可能なのでしょうか。

アドバイスをお願いいたします。


επιστημη  URL  2008-04-06 11:53:18  No: 67975

一例:

      TreeNode^ node = treeView1->SelectedNode;
      String^ childTexts = L"";
      if ( node != nullptr ) {
        for each (TreeNode^ child in node->Nodes ) {
          childTexts += child->Text + L" / ";
        }
        textBox1->Text = childTexts;
      }


たもつ  2008-04-07 13:43:33  No: 67976

επιστημηさん、ありがとうございます。

子ノードを取得することができました。
でも、なんとなく理解できていない感じだったので、逆に「長男」だけ取り出してみようと思いました。

  TreeNode^ node = treeView1->SelectedNode;
  if ( node != nullptr ) {
    TreeNode^ child = node->Nodes;
    textBox1->Text = child->Text;
  }

for each をはずすと、こんな感じだと思ったのですが、

TreeNode^ child = node->Nodes;

がビルドを通らず、

TreeNodeCollection^ から TreeNode^ に変換できません。

というエラーになります。

なぜ、for each では通っているものがエラーになるのか、わかりません。
また、どのようにコーディングしたらいいのかも分かりません。

Nodes は、MSDNを調べたら、treeView のメンバでした。

アドバイスを頂けませんでしょうか。
よろしくお願いいたします。


たもつ  2008-04-07 14:19:15  No: 67977

申し訳ありません。
下記で自己解決しました。
たいへん失礼いたしました。

TreeNode^ node = treeView1->SelectedNode;
if ( node != nullptr ) {
  if ( node->Nodes->Count > 0 ) {
    textBox1->Text = node->Nodes[0]->Text;
  }
}


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加