• ベストアンサー

TreeViewのChild Node

任意のNodeのChild Nodeの 一覧を取得したいのですが、 これはどこでというかどうやると取得できるのでしょうか? よろしくお願いします。 VB6+Windows2000です。

質問者が選んだベストアンサー

  • ベストアンサー
  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.1

再帰呼出を使って取得する方法が普通です。 例えば、 'Dim intNodesCount As Integer 'Dim nodChildren() As Node ' 'Sub GetAllNodeChildren(ByVal nodSetNode As Node) ' intNodesCount = 0 ' Erase nodChildren ' Call GetNodeChildren(nodSetNode) 'End Sub 'Sub GetNodeChildren(ByVal ParentNode As Node) 'Dim nodX As Node ' For Each nodX In TreeView1.Nodes ' If nodX.Parent Is ParentNode Then ' intNodesCount = intNodesCount + 1 ' ReDim Preserve nodChildren(1 To intNodesCount) ' Set nodChildren(intNodesCount) = nodX ' Call GetNodeChildren(nodX) ' End If ' Next 'End Sub こんな感じでどうでしょう?

wakaranai_kun
質問者

お礼

なるほど。 まずは全ノードをチェックしてしまうわけだったんですねぇ。 ありがとうございました。

関連するQ&A

  • TreeViewのNodeについて

    任意のNodeがフォーカスを得た場合、背景色を変更しています。 ところがNodeにLostFocusのようなイベントがないのでフォー カスが他に移った場合にもとに戻せません。元に戻すにはどの ような作業をすればいいのでしょうか? よろしくお願いします。 VB6+Windows2000です。

  • .NetのTreeViewの使い方について

    TreeView配下にTreeNodeを作成・表示した際に、ノードをクリックすると自動的にリバース表示されますが、これを止めることはできないでしょうか。 TreeView1   -Node0      -Node01      -Node02      -Node03   -Node1      -Node11      -Node12 のようになっているとき、たとえばNode01がクリックされたらNode0,Node01,Node02,Node02のすべてのForeColorをColor.Redにするなどして、まとまりのあるものとして認識させたいのですが、リバース表示が邪魔です。TreeViewやNodeのプロパティ、メソッドも調べてみましたが、それらしいものがありません。 OS:Windows7 (Home) 言語:VisualStudio 2010(VidsualBasic) よろしくお願いいたします。

  • delphi、treeviewについて再び

    お世話になっております。 たびたびtreeviewがらみなんですが、 treeview上で、nodeのテキストを変更可能にした時、 OnEditedで該当ノードのテキストを取得しようとすると、 やり方が悪いのか、どうしても変更前のテキストしか取得できません。 変更後のテキストを取得するにはどうしたらいいのでしょう?

  • Treeviewのnodeについて

    お世話になります。 C#2005で開発をしております。 Treeviewに関してのご質問をさせていただきます。 Treeviewのnodeの一つを、enable=falseにしたいと考えております。 しかしながら、Treeviewにプロパティがありません。 enabel=falseに相当するプロパティがあれば、ご教示いただければ幸いに存じます。 現状は、Treeviewのnodeの一つの文字色を変更する方法で考えておりますが、 何かよい方法があればと思いご質問させていただきました。 恐れ入りますが、ご回答いただければ幸いに存じます。

  • 1才頃から使えるチャイルドシートってありますか?

    今使っているベビーシートが1才半までです。 なので、新たに1才から使えるチャイルドシートの購入を考えています。 できればチャイルドシートの義務年齢を1台でカバーできるものを探しています。 1才から使えるチャイルドシートの一覧みたいなサイトがあれば教えてください。 また、おすすめもあれば教えていただきたいです。 違う車に乗せかえることも多々あると思うので、取り外しなどが楽なものが希望です。

  • node-redをwindowsにインストール

    自分のwindows10のPCでnode-redを使ってみたいと思い、windowsでのnode-redのインストール方法を調べてみたところ、 Windows でnode-REDを使ってIoT (1) インストール | 電子工作の環境向上 https://www.denshi.club/pc/nodered/windows-node-red-1.html @DenshiClubさんから こちらのサイトを見つけて、 https://nodejs.org/en/ こちらのサイトからwindows用の最新版のmsiファイルをダウンロードしてインストールを実行しました。 インストールで参考にしていたサイトによると、powershellを管理者権限で起動して npm install -g node-red このコマンドで起動すると、インストールできるはずのようですが、つぎのようなエラーが出てきてうまくいきません。 (エラー内容) PS C:\WINDOWS\system32> npm install -g node-red npm : 用語 'npm' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名 前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパ スが正しいことを確認してから、再試行してください。 発生場所 行:1 文字:1 + npm install -g node-red + ~~~ + CategoryInfo : ObjectNotFound: (npm:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException 環境変数というものが関わっているようなのですが、あまりよくわかりません。 解決方法をご教示頂きますよう、よろしくお願い致します。

  • VB2008.netのTreeViewについて質問です。

    VB2008.netのTreeViewについて質問です。 質問させて頂きます。 VB2008で作業をしています。 TreeViewで子ノードを選択します。 この時、選択されている子ノードの、親ノードを取得したいのですが 方法がわかりません。 わかる方教えていただけないでしょうか。

  • XMLでのAttributeを持ったNodeの追加方法

    VB6にてcreateNodeを使ってXMLを作成しようとしています。 シンプルなXMLは作成できたのですがAttributeを持ったNodeの追加方法が分かりません。 下記のようなXMLファイルを作成しようとしています。 <?xml version="1.0" encoding="utf-8"?> <configuration> <userSettings> <setting name="Color_Unknown_On" serializeAs="String"> <value>True</value> </setting> </userSettings> </configuration> ご教授お願いいたします。

  • TreeViewに重複する値をセット

    VB2005Expressで開発しています。 TreeViewにデータテーブルの値をセットして表示しています。 セットする値に重複する値がある場合、ツリーの構造が崩れてしまいます。左図のようにしたいのですが、右図のようになってしまいます。 あ あ |-い |-い | | | | | -う | -う お | -え |-い お | | | -え ツリーの値に非表示のキーを持たせる等、何か対応法をご存知の方が いらっしゃいましたら教えて下さい。下記がPGMです。 '処理内容:TreeViewにデータテーブルの値をセット Private Function fncTreeViewSet() As Boolean Dim dTbl As DataTable Dim Node As TreeNode Dim intMenuNo As Integer Dim strMenuName1 As String Dim strMenuName2 As String Dim strMenuName3 As String Dim strMenuName4 As String Dim strMenuName5 As String Dim i As Integer Node = TreeView1.SelectedNode dTbl = dsDataSet.Tables("Mメニュー") For i = 0 To dTbl.Rows.Count() - 1 intMenuNo = 0 strMenuName1 = "" strMenuName2 = "" strMenuName3 = "" strMenuName4 = "" strMenuName5 = "" strMenuName1 = Trim$(dTbl.Rows(i)("階層1")) intMenuNo = dTbl.Rows(i)("工程番号") strMenuName2 = Trim$(dTbl.Rows(i)("階層2").ToString) strMenuName3 = Trim$(dTbl.Rows(i)("階層3").ToString) strMenuName4 = Trim$(dTbl.Rows(i)("階層4").ToString) strMenuName5 = Trim$(dTbl.Rows(i)("階層5").ToString) If strMenuName1 = "" Then Else If strMenuName2 = "" Then TreeView1.Nodes.Add(strMenuName1) '階層1をセット Else If strMenuName3 = "" Then fncSerchNode(strMenuName1) TreeView1.SelectedNode.Nodes.Add(strMenuName2) '階層2をセット Else If strMenuName4 = "" Then fncSerchNode(strMenuName2) TreeView1.SelectedNode.Nodes.Add(strMenuName3) '階層3をセット Else If strMenuName5 = "" Then fncSerchNode(strMenuName3) TreeView1.SelectedNode.Nodes.Add(strMenuName4) '階層4をセット Else fncSerchNode(strMenuName4) TreeView1.SelectedNode.Nodes.Add(strMenuName5) End If End If End If End If End If Next TreeView1.SelectedNode = Nothing End Function '処理内容:指定ノード選択 Private Function fncSerchNode(ByVal strMenuName As String) As Boolean Dim Node As TreeNode For Each Node In fncGetAllNodes(TreeView1.Nodes) If Node.Text = strMenuName Then TreeView1.SelectedNode = Node Exit For End If Next End Function '処理内容:子ノードも含んだすべてのノードを取得 Private Function fncGetAllNodes(ByVal Nodes As TreeNodeCollection) As ArrayList Dim Ar As New ArrayList Dim Node As TreeNode For Each Node In Nodes Ar.Add(Node) If Node.GetNodeCount(False) > 0 Then Ar.AddRange(fncGetAllNodes(Node.Nodes)) End If Next Return Ar End Function

  • TreeViewコントロールについて

    VB2005環境です。 TreeViewコントロールを作成し、ノードごとにクリックイベントを 追加して、タブコントロールを呼び出すようにしたいと考えています。 (親ノードをクリックしたら、親ノード用のタブコントロールが 画面に表示され、さらに子ノードAをクリックすると、ノードA用の タブコントロールが表示される、ノードBをクリックすると…という具合に)。 NodeMouseClickイベントを使えば良いのかとは思うのですが、クリックイベントが 子ノード各々ごとに取得できず困っています。 やり方を教えていただけないでしょうか? 更に、そこから各々専用のタブコントロールを呼び出す方法も 教えていただけるとありがたいです。 よろしくお願いします。

専門家に質問してみよう