• 締切済み

VB2005 TreeViewの選択されてノード表示

最近VB2005を使い始め苦戦しています。 ГA:\ |-C:\ | |-AAA | LBBB | |-xxx | |-yyy | Lzzz LD:\ VB2005 TreeViewを使用し、上記の階層の"zzz"をクリックした際、以下の事がしたく投稿しました。 Q1: テキストボックスへ一発で"zzz"を表示したいのですが、一度クリックをし"+"を表示後クリックしないと表示されません。 Q2: SelectedNode.Textで得たカレントフォルダ名から絶対パスを取得したいのですが可能ですか?。 解決策をご存知の方よろしくお願いいたします。

みんなの回答

  • tom11
  • ベストアンサー率53% (134/251)
回答No.3

追伸 質問の内容をコード化すると以下のようになりますが。 Dim a As New TreeNode("a:") Dim c As New TreeNode("c:") Dim d As New TreeNode("d:") Dim aaa As New TreeNode("aaa:") Dim bbb As New TreeNode("bbb:") Dim xxx As New TreeNode("xxx:") Dim yyy As New TreeNode("yyy:") Dim zzz As New TreeNode("xxx:") TreeView1.Nodes.Add(a) TreeView1.Nodes.Add(c) TreeView1.Nodes.Add(d) c.Nodes.Add(aaa) c.Nodes.Add(bbb) bbb.Nodes.Add(xxx) bbb.Nodes.Add(yyy) bbb.Nodes.Add(zzz) TreeView1.ExpandAll() 以上の結果、 ツリービューには画像の様に最初から展開されて 表示されます。

fks0518
質問者

お礼

こんばんわ。 回答して頂いた内容だと確かに展開できました。 やりたいことと質問の内容が一致していませんでした。 お手数をおかけし申し訳ありませんでした。

  • tom11
  • ベストアンサー率53% (134/251)
回答No.2

こんにちは、 For Each Drive As String In IO.Directory.GetLogicalDrives TreeView1.Nodes.Add(Drive) Next これでは、ツリー構造になっていないので、 展開したくても、展開するものが ないと思いますが。 質問者が、質問に書いた構造のツリーがあって +をクリックすると展開する代わりに 最初から、TreeView1.ExpandAll() にすると、単に、最初から、展開されて表示されるだけです。

  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

こんにちは、 Q1 全部展開させる以下のメソッドでは、駄目ですか?? TreeView1.ExpandAll() Q2  フルパスを出したいなら、以下のコードでは、駄目ですか? TreeView1.SelectedNode.FullPath.ToString()

fks0518
質問者

お礼

こんにちは。 Q2はできました。 Q1はうまくできませんでした。 ちなみにこんな感じで試してみました。 -------------------------------------------------------------- Private Sub Form1_Load() For Each Drive As String In IO.Directory.GetLogicalDrives TreeView1.Nodes.Add(Drive) TreeView1.ExpandAll() Next End sub -------------------------------------------------------------- ご指摘、解決策があればご教授願います。

関連するQ&A

  • 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

  • 要素名を表示させたい

    <data>   <aaa xxx="0">     <yyy zzz="1"/>     <yyy zzz="2"/>   </aaa>   <bbb xxx="0">     <yyy zzz="1"/>     <yyy zzz="2"/>   </bbb>   <ccc xxx="0">     <yyy zzz="1"/>     <yyy zzz="2"/>   </ccc> </data> 上のようなXMLから、XSLのvalue-ofなどを使って、 要素名aaa、bbb、cccを表示させるにはどう記述すればいいのでしょうか?

    • ベストアンサー
    • XML
  • 指定個所を一気に改行

    こんにちは、 wordの機能でこんなものがあればと思っているのですが、いかがでしょうか。 特定個所、たとえば、カンマ、を指定して、 カンマのある個所を一気に改行させる というものです。 つまり、 XXX,yyy,zzz,aaa,bbbb, とあったら、 XXX, yyy, zzz, aaa, bbbb, と一括でできればと思っているのですが、いかがでしょうか。 WORDに限らず、テキストをなんとかこのように処理したいのですが、 どうでしょうか。現在、一つ一つ改行している次第でして、お助けいただければ幸いです。

  • TreeViewについて

    いつも大変お世話になっております。福島です。 TreeViewのことで教えて頂きたいのですが・・・ 社員登録で3階層(部・課・社員)のツリー構造をなす TreeViewを作成しましたが、1社員の情報を変更したときに 状態を反映するためにTreeView全体を消去してから書き直しています。 (例えば)課や部を移動したとき しかし表示する数が多くなってきた為に再構築に非常に時間が かかってしまい実用的でなくなってしまいました。 あるノードの下だけ変更(削除)する方法はありますか? 今は、「treeView.Nodes.Clear」を使用して全体を削除して 再度ツリーを作成しています。 aNode(部) bNode(課) cNode(社員) のようになっています。 宜しくお願い申し上げます。 Windows2000SP2 + VB6.0SP4

  • 改行コード再

    3つほど前に質問させてもらってますが質問の仕方をかえ もう一度質問したいと思います。putcharとgetcharを使って aaa,bbbb,ccc CRLF zzz,yyy,xxxという入力は aaa,bbb,ccc CRLF zzz,yyy,xxx CRLF と出力する とあるのですがCRLFを実際に打ち込んで出力してますよね? CRLFについてはなんとなくわかったのですがこの辺が よくわかりません。

  • URLからディレクトリ構造をテキストとして取り出す方法

    URLからディレクトリ構造をテキストとして取り出す方法 たとえば http://www.xxx.com/xxx/yyy/zzz/ といったパスから、 自動的に http://www.xxx.com ├─xxx │ ├─yyy │ │ ├─zzz のようなツリーテキストを自動的に生成する方法や ツールはありませんか。 意味不明でしたら加筆しますのでよろしくお願いします。

  • TreeViewの再表示のちらつきをなくす方法

    お世話になっております。 VB2005でWinアプリ開発中です。 テキストボックスに条件を入力し、ボタンを押下すると、 TreeViewに該当データのノードを設定し、 ノードを展開した状態で表示する処理があります。 ノードが展開表示されている状態で、ボタンを押下し 新しい情報を再表示すると、 ノードが折りたたまれて展開されたというような動きが見えてしまいます。 SuspendLayout/ResumeLayoutを入れてみたのですが、変化無しでした。 ノードが展開された状態で、パッと再表示するには、 どのようにすればよいのでしょうか? よろしくお願いします!

  • 表示されているレコードを1つ上にする

    環境:ACCESS2003&XP Pro テーブルとそのテーブルをソースにしたクエリーを元に一覧形式のフォームを作成しています。以下のようなイメージです。 品名  仕様  数量 単価 合計  A   xxx xxx xxx xxx ↑  b   yyy yyy yyy yyy ↑  C   zzz zzz zzz zzz ↑ *↑はボタン 上記の表示で↑ボタンをクリックすると 表示されたレコードがひとつ上に行く方法が わかりません。 よろしくお願いします。 例:上記で品名bの↑ボタンをクリック 品名  仕様  数量 単価 合計  b   yyy yyy yyy yyy ↑  A   xxx xxx xxx xxx ↑  C   zzz zzz zzz zzz ↑

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

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

  • ボタンコントロールの改行(WindowMobile)

    VB.NET、WindowsMobile5.0の開発です。 ボタンコントロール内のテキストを改行したいのですがどうすればよいのでしょうか? フォームロードで Me.Button4.Text = "xxx" + vbCrLf + "yyy" Me.Button4.Text = "xxx" & vbCrLf & "yyy" としてみましたがxxxが上側へ張り付いてyyyは表示されません。 ボタンの範囲を広げてもyyyは表示されてませんでした。 モバイル特有の何らかの処理が必要なのでしょうか? それともそもそも方法がだめなんでしょうか? 初歩的な質問で申し訳ありませんが、ご教授お願い申し上げます。