.NET2008です。
CLIのツリービューで、選択されているノードの子ノードの取得方法がわかりません。
MSDNで、TreeNodeのメンバを探すと、ChildNodesがあり、
現在のノードの第 1 レベルの子ノードを格納する TreeNodeCollection コレクションを取得します。
となっています。
しかし、具体的に、どのようにコーディングしたらいいのか分かりません。
TreeNode^ node = treeView1->SelectedNode;
textBox1->Text = node->ChildNodes->Text;
ですと、エラーになります。
また、取得できるのは「長男」というイメージだったのですが、MSDNを「くぐる」と、反復処理で一度に子を全部取得できるようなことも書いてありました。
そうしたことは可能なのでしょうか。
アドバイスをお願いいたします。
一例:
TreeNode^ node = treeView1->SelectedNode;
String^ childTexts = L"";
if ( node != nullptr ) {
for each (TreeNode^ child in node->Nodes ) {
childTexts += child->Text + L" / ";
}
textBox1->Text = childTexts;
}
επιστημηさん、ありがとうございます。
子ノードを取得することができました。
でも、なんとなく理解できていない感じだったので、逆に「長男」だけ取り出してみようと思いました。
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 のメンバでした。
アドバイスを頂けませんでしょうか。
よろしくお願いいたします。
申し訳ありません。
下記で自己解決しました。
たいへん失礼いたしました。
TreeNode^ node = treeView1->SelectedNode;
if ( node != nullptr ) {
if ( node->Nodes->Count > 0 ) {
textBox1->Text = node->Nodes[0]->Text;
}
}
ツイート | ![]() |