• 締切済み

.NETのTreeViewの項目が一つの場合の画面遷移

.NETのTreeViewの項目が一つの場合の画面遷移がうまくできません。 'Dim Node As TreeNode 'Dim form2 As New あああ 'Node = TreeView2.SelectedNode 'Select Case Node.Text ' Case "あああ" ' form2.Show() ' Me.Hide() 'End Select とすると、他画面から、TreeViewを経由して遷移させたくても、TreeView内に一つしか選択要素がない場合の画面へは行かず、すぐ上のTreeView内にいくつもの選択要素がある画面へ飛んでしまいます。 単体で動かしたくても、TreeView内に選択項目が一つの場合は動きません。 どなたか、回避する方法をご存知の方お教えください

  • vbno1
  • お礼率37% (47/125)

みんなの回答

回答No.1

何か答えてあげたいけど、、、、 文章が全く理解できません。。。 特にこの部分 >TreeView内に一つしか選択要素がない場合の画面へは行かず、すぐ上のTreeView内にいくつもの選択要素がある画面へ飛んでしまいます 要素が一つしかないはずなのに、上にはある??すぐ上って何ですか???親ノードってこと???? 書いてあるコードがかいてあるイベントはどこですか?TreeViewのAfterSelectとかですか?? データ例を書かないと、全くわかりません。 とりあえず、TreeViewの例 ルート │ ├サブ1 │├サブ1-1 │└サブ1-2 │ ├サブ2 │ └サブ3  └サブ3-1 上記の場合、 ・サブX-Xをクリックしたら画面遷移ですよね? ・その親ノードのサブXをクリックしても、画面遷移ですか? 補足してください。

関連する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

  • VB2005 ツリービューに子ノードを追加

    VB2005 ExpressEditionにて開発しています。 フォームロード時にデータセットからツリービューにデータをセット しようとしています。 ルートノードには  Dim Node As TreeNode  Node = TreeView2.SelectedNode  TreeView2.Nodes.Add("追加したい名前") で追加できます。 子ノードを追加する時はどうしたらいいのでしょうか。 ご存知の方がいらっしゃいましたら教えて下さい。 よろしくお願いします。

  • .NET のTreeViewのカーソルについて

    TreeView内の項目がいくつかあり、項目を押下すると、画面が遷移します。 しかし、項目以外を押下すると、一番上の項目にイベントが発生し、押下できなくなってしまいます。一番上の項目へフォーカスが発生しないようにするには、どうしたら良いでしょうか? 今のソースは以下のようです Select case ・・・・ case 1111 移動 case 2222 移動  case "" end select

  • C#でtreeviewの指定ノードを選択する

    C#にて、 treeviewでの選択ノードを記憶しておき、 treeviewを一度更新(削除し作成)し、 記憶してあるノードを再び選択する。という動きをしたいです。 TreeNode tn = new TreeNode(); tn = treeView1.SelectedNode; //ここでDB再読み込み→treeView再作成 treeView1.Focus(); treeView1.SelectedNode = tn; としているのですが、TopNode選択状態になってしまい、 最初に選択していたNodeを選択してくれません。 どなたかご教授願います。 よろしくお願いいたします。

  • TreeViewのTag情報取得

    VB.NET2003 を使用して、 CheckBox付のTreeViewを作成しました。 階層は3階層用意して、最下層のTextに人名・Tagにメールアドレスをセットしました。 下記のサンプルの場合、チェックを入れたDさんのメールアドレスのみを 取得したいのですが、どのよう書けばよろしいでしょうか? ご教授いただけますよう、お願い致します。 TreeViewイメージ □本部  □総務課   □Aさん   □Bさん  □人事課   □Cさん   ■Dさん   □Eさん □営業  □東京   □Fさん   □Gさん TreeView作成コード Dim parentrow As DataRow Dim ParentTable As DataTable For Each parentrow In ds.Tables("A").Rows Dim parentnode As TreeNode parentnode = New TreeNode(parentrow.Item("SHOZOKU").ToString) treeView1.Nodes.Add(parentnode) ''''child''''' Dim childrow As DataRow Dim childnode As TreeNode childnode = New TreeNode For Each childrow In parentrow.GetChildRows("A") childnode = parentnode.Nodes.Add(childrow("BUSHO_NAME").ToString) ''''child2'''' Dim childrow2 As DataRow Dim childnode2 As TreeNode childnode2 = New TreeNode For Each childrow2 In childrow.GetChildRows("B") childnode2 = childnode.Nodes.Add(childrow2("NAME").ToString) childnode2.Tag = childrow2("MAIL").ToString Next childrow2 '''''''''''''''''''''''' Next childrow ''''''''''''''' Next parentrow treeView1.CheckBoxes = True

  • TreeView と DOMツリー

    C# WPF でプログラミングをしています。 TreeView に XML の階層構造を表示させて、ある項目を選択し、ボタンをクリックするとその項目の子ノードが追加されるようにするプログラムを作っています。 選択した項目(TreeView.SelectedItem(Object型)) を、DOMツリーの要素ノード (XmlElement型) にキャストし、それに新しく作った要素ノード(XmlElement型)をつなげるといったようにしているのですが、その際「挿入するノードは、異なるドキュメント コンテキストのものです。」のエラーが発生してしまいます。 XmlElement tvi = treeView.SelectedItem as XmlElement; XmlElement item = doc.CreateElement("item"); tvi.PrependChild(item); // エラー発生箇所 ※ doc は XmlDocument のインスタンスです。 解決策を教えてください。よろしくお願いします。

    • ベストアンサー
    • XML
  • アプリケーションの画面遷移

    PC向けの一般的なアプリケーションの画面遷移について、ご教示ください。 データの登録・修正・削除のための画面遷移として、以下の2つのケースをよく見かけます。 個人的には、ケース1はOA系のアプリケーション、2はWebのアプリケーションでよく見かけるように思うのですが、それぞれのメリット・デメリットや、どのような条件(要件)の場合に適しているのかについて、ご教示いただけると幸いです。 ■ケース1 ・メニューから、データを登録する画面に遷移する。 ・モード入力欄にモードを入力(またはモード切替欄で選択)で、登録/修正/削除を選択する。 ・データを登録する。(または修正、削除する) ■ケース2 (以下、登録の場合) ・メニューから、登録画面に遷移し、データを登録する。 (以下、修正/削除の場合) ・メニューから、検索画面に遷移し、修正/削除したいデータを検索する。 ・検索結果から、修正/削除したいデータを選択する。 ・データを修正する。(または削除する)

  • VB.NET 画面遷移

    VB.NET2005にて開発してます。 画面遷移で困ってます。 親画面にボタンが複数ありボタンから各子画面へ遷移するのは問題ないのですが、 子画面同士で画面遷移させたい場合オーナーという概念がないため遷移前画面の操作が出来ません。 publicで子画面FORMを宣言するなどすれば良いのでしょうか? それ良いならその方法を教えてください。 違うならその他方法を教えてください。 VB.NETは全くの初心者なので分かりやすくお願い申し上げます。

  • Oracle階層問合せよりツリーノードを作成

    Oracle階層問合せの結果よりVB.NETのTreeViewを作成する方法を教えてください。 ・階層問合せのサンプル SELECT LPAD(' ', 2*level-1)||SYS_CONNECT_BY_PATH(last_name, '/') "Path" FROM employees START WITH last_name = 'Kochhar' CONNECT BY PRIOR employee_id = manager_id; Path --------------------------------------------------------------- /Kochhar /Kochhar/Greenberg /Kochhar/Greenberg/Faviet /Kochhar/Greenberg/Chen /Kochhar/Greenberg/Sciarra /Kochhar/Greenberg/Urman /Kochhar/Greenberg/Popp /Kochhar/Whalen /Kochhar/Mavris /Kochhar/Baer /Kochhar/Higgins /Kochhar/Higgins/Gietz VB.NET作成途中 Dim LEVEL_prev As Integer = 0 Dim node_prev As New TreeNode("") Dim aryNODENO(16) As Integer While (reader.Read()) NODE_NO = reader.Item("NODE_NO") LEVEL = reader.Item("LEVEL") PATH = reader.Item("PATH") NAME = reader.Item("NAME") Dim i As Integer Dim node_cur As New TreeNode("") node_cur.Expanded = True node_cur.Text = strSITE_NAME If intNODE_NO = 1 Then ' 新規ノードを準備する TreeView2.Nodes.Add(node_cur) Else If intLEVEL_prev < intLEVEL Then ' 下位層へ移動の場合、新規ノードを準備する TreeView2.Nodes(aryNODENO(intLEVEL - 1) - 1).ChildNodes.Add(node_cur) ElseIf intLEVEL_prev = intLEVEL Then '前のノードと同一階層 ' 前のノードを上位階層へ追加 TreeView2.Nodes(aryNODENO(intLEVEL - 1) - 1).ChildNodes.Add(node_cur) ElseIf intLEVEL_prev > intLEVEL Then ' '' 上位層へ移動の場合 '' ' ノードを上位階層へ追加 TreeView2.Nodes(aryNODENO(intLEVEL - 1) - 1).ChildNodes.Add(node_cur) End If End If intLEVEL_prev = intLEVEL node_prev = node_cur End While     Me.TreeView2.Nodes(0).Expand() 以上

  • 実行画面が消えてしまう?

    WindowsXP、VB6.0でデレクトリをTreeViewに表示するプログラムです。 フォームにTreeViewコントロールとコマンドボタンを貼り付け、 下記のプログラムを実行します。 curFolder.Name に "System Volume Information" がでると エラーになり、それを回避するために "On Error Resume Next"をいれて EXEファイルを作り、実行するとフォームが消えてしまいます。 どなたか教えて下さい。 Private Sub Command1_Click() ' Microsoft Scripting Runtime を参照設定する。 Dim item1 As Node, FsoObj As New scripting.FileSystemObject Set item1 = TreeView1.Nodes.Add(, , , "c:") Call SearchFolder(FsoObj.GetFolder("c:\"), item1) End Sub Private Sub SearchFolder(NextFolder As scripting.Folder,               itemX As Node) On Error Resume Next Dim TreeItem As Node, curFolder As scripting.Folder For Each curFolder In NextFolder.SubFolders ' Debug.Print curFolder.Path Set TreeItem = TreeView1.Nodes.Add(itemX.Index,                tvwChild, , curFolder.Name) Call SearchFolder(curFolder, TreeItem) Next End Sub

専門家に質問してみよう