ツリービューのノード選択 への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 太郎冠者  (社会人)
投稿日時
2010/3/21 05:52:37
こんな感じですか?
'FormにTreeView1を配置
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TreeView1.Nodes.Add("親です", "親")
TreeView1.Nodes("親です").Nodes.Add("子供Aです", "子供A")
TreeView1.Nodes("親です").Nodes.Add("子供Bです", "子供B")
TreeView1.Nodes("親です").Nodes.Add("子供Cです", "子供C")
TreeView1.Nodes("親です").Nodes.Add("子供Dです", "子供D")
TreeView1.Nodes("親です").Nodes.Add("子供Eです", "子供E")
End Sub
Private Sub TreeView1_NodeMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick
Select Case e.Node.Name
Case "親です"
MsgBox("親がClickされたよ!")
Case "子供Aです"
MsgBox("子供AがClickされたよ!")
Case "子供Bです"
MsgBox("子供BがClickされたよ!")
Case "子供Cです"
MsgBox("子供CがClickされたよ!")
Case Else
MsgBox("なんかClickされたよ!")
End Select
End Sub
End Class
投稿者 パル36  (中学生)
投稿日時
2010/3/21 05:09:09
太郎冠者sありがとうございます。
>最初の深さは 0 です。
1じゃなくて0からなんですね。
最後にもう1つ質問があります。
それはツリービューが、
+ノード1
-子ノード1
-子ノード2
-子ノード3
の時、レベル0はノード1でレベル2は子ノードすべてになってしまうことです。
自分がしたいのは、子ノードを別々に命令したいんですがそういうことはできるのでしょうか?
よろしくお願いします。
>最初の深さは 0 です。
1じゃなくて0からなんですね。
最後にもう1つ質問があります。
それはツリービューが、
+ノード1
-子ノード1
-子ノード2
-子ノード3
の時、レベル0はノード1でレベル2は子ノードすべてになってしまうことです。
自分がしたいのは、子ノードを別々に命令したいんですがそういうことはできるのでしょうか?
よろしくお願いします。
投稿者 太郎冠者  (社会人)
投稿日時
2010/3/21 04:11:37
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.treenode.level(VS.80).aspx
[MSDN - TreeNode.Level プロパティ]より
[引用]
TreeView コントロールにおけるツリー ノードの深さを取得します。最初の深さは 0 です。
[/引用]
だそうです。
[MSDN - TreeNode.Level プロパティ]より
[引用]
TreeView コントロールにおけるツリー ノードの深さを取得します。最初の深さは 0 です。
[/引用]
だそうです。
投稿者 パル36  (中学生)
投稿日時
2010/3/21 03:07:55
くらsありがとうございます。
こんな使い方があるとは知りませんでしたw
でも疑問があります。
ノードのレベルってどうすればわかりますか?
例えば、
If TreeView1.SelectedNode.Level = 1 Then
MsgBox ("1")
ElseIf TreeView1.SelectedNode.Level = 2 Then
MsgBox ("2")
End If
で、親ノードをクリックしても反応ないし、子ノードをクリックすると「1」が出てしまいます。
初心者で疑問ばかりですがお願いします。
こんな使い方があるとは知りませんでしたw
でも疑問があります。
ノードのレベルってどうすればわかりますか?
例えば、
If TreeView1.SelectedNode.Level = 1 Then
MsgBox ("1")
ElseIf TreeView1.SelectedNode.Level = 2 Then
MsgBox ("2")
End If
で、親ノードをクリックしても反応ないし、子ノードをクリックすると「1」が出てしまいます。
初心者で疑問ばかりですがお願いします。
投稿者 くら  (社会人)
投稿日時
2010/3/21 02:39:36
Private Sub TreeView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.DoubleClick
If TreeView1.SelectedNode.Level = (親ノードのレベル) Then
ElseIf TreeView1.SelectedNode.Level = (子ノードのレベル) Then
End If
完全じゃないけど
こんな感じ?
If TreeView1.SelectedNode.Level = (親ノードのレベル) Then
ElseIf TreeView1.SelectedNode.Level = (子ノードのレベル) Then
End If
完全じゃないけど
こんな感じ?
投稿者 パル36  (中学生)
投稿日時
2010/3/21 00:53:09
上の返答の身分間違えてました。
投稿者 パル36  (小学生)
投稿日時
2010/3/21 00:48:44
るしぇs回答ありがとうございます。
>そのままノードのクリック(ダブルクリック)イベントじゃないの?
それを一回やってみたのですが、子ノードだけでなく親ノード(ルート?)にも反応してしまいます。
やりたいのは、任意の子ノードだけをクリックすると別のコントロールを有効にし、違う子ノードをクリックすると違う動作をさせることです。
WEBで調べてもぴったしの回答・やり方が載っていませんでした。
よろしくお願いします。
ちなみに、
>プロパティの中にイベントなんか無いよ。別のものなんだから。
たぶん書き間違えです。プロパティの隣にあるイベントのことでした。
(そこのクリックイベントをやりましたが上の返答のようになり、できませんでした。)
>そのままノードのクリック(ダブルクリック)イベントじゃないの?
それを一回やってみたのですが、子ノードだけでなく親ノード(ルート?)にも反応してしまいます。
やりたいのは、任意の子ノードだけをクリックすると別のコントロールを有効にし、違う子ノードをクリックすると違う動作をさせることです。
WEBで調べてもぴったしの回答・やり方が載っていませんでした。
よろしくお願いします。
ちなみに、
>プロパティの中にイベントなんか無いよ。別のものなんだから。
たぶん書き間違えです。プロパティの隣にあるイベントのことでした。
(そこのクリックイベントをやりましたが上の返答のようになり、できませんでした。)
投稿者 るしぇ  (社会人)
投稿日時
2010/3/20 23:19:12
そのままノードのクリック(ダブルクリック)イベントじゃないの?
[TreeView.NodeMouseClick イベント]
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.treeview.nodemouseclick.aspx
[TreeView.NodeMouseDoubleClick イベント]
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.treeview.nodemousedoubleclick.aspx
> プロパティにもそのようなイベントが見つかりませんでした。
プロパティの中にイベントなんか無いよ。別のものなんだから。
[TreeView.NodeMouseClick イベント]
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.treeview.nodemouseclick.aspx
[TreeView.NodeMouseDoubleClick イベント]
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.treeview.nodemousedoubleclick.aspx
> プロパティにもそのようなイベントが見つかりませんでした。
プロパティの中にイベントなんか無いよ。別のものなんだから。
投稿者 パル36  (中学生)
投稿日時
2010/3/20 20:27:11
おはようございます。今回で、2度目の質問をさせていただきます。
フォームにツリービューを配置し、ノード(ノード1)・子ノード(子ノード1)をコレクションに追加します。
ここから質問なのですが、子ノード1をクリック(ダブルクリック)すると「~を表示する」のように命令をすることができるのでしょうか。プロパティにもそのようなイベントが見つかりませんでした。
まったくの初心者ですが、よろしくお願いします。
言語:VB2008EE
OS:Vista
フォームにツリービューを配置し、ノード(ノード1)・子ノード(子ノード1)をコレクションに追加します。
ここから質問なのですが、子ノード1をクリック(ダブルクリック)すると「~を表示する」のように命令をすることができるのでしょうか。プロパティにもそのようなイベントが見つかりませんでした。
まったくの初心者ですが、よろしくお願いします。
言語:VB2008EE
OS:Vista
早速やってみましたが、まさにコレでした。
わかり易くコードなども書いていただき本当にありがとうございました。
また、この質問に回答してくれた方々本当にありがとうございました。
おかげで、良いソフトが作れそうです。
では、また何かありましたらよろしくお願いします。
これにて、このトッピクを閉じさせてもらいます。