C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

Treeviewを選択してイベント実行 /マリ夫 (20/05/12(Tue) 15:45) #94749
Re[1]: Treeviewを選択してイベント実行 /魔界の仮面弁士 (20/05/12(Tue) 15:55) #94751
  └ Re[2]: Treeviewを選択してイベント実行 /マリ夫 (20/05/12(Tue) 16:04) #94752
    └ Re[3]: Treeviewを選択してイベント実行 /魔界の仮面弁士 (20/05/12(Tue) 16:08) #94753
      └ Re[4]: Treeviewを選択してイベント実行 /マリ夫 (20/05/12(Tue) 16:35) #94754 解決済み


親記事 / ▼[ 94751 ]
■94749 / 親階層)  Treeviewを選択してイベント実行
□投稿者/ マリ夫 (7回)-(2020/05/12(Tue) 15:45:43)

分類:[VB.NET/VB2005 以降] 

Visualstudio2019、VB.NETでFORMアプリケーションを作成しています。
Treeviewへのノードの追加について教えていただけたらと思います。

以下のようなTreeviewがあるとき、LIST1-AA、LIST1-BB、LIST1-CCを選択したとき、イベントを走らせるようにしています。
TreeView1.AfterSelectでイベントを走らせているのですが、例えば、LIST1-AAを選択してイベント後、
再度LIST1-AAを選択した時、イベントが走りません。

TEST1
┣TEST1-A
┃┗LIST1-AA

┣TEST1-B
┃┗LIST1-BB

┗TEST1-C
 ┗LIST1-CC


このような状況で、イベントを発生させるにはどのようにすればよいのでしょうか
教えていただけたらと思います。
よろしくお願いします。
[ □ Tree ] 返信 編集キー/

▲[ 94749 ] / ▼[ 94752 ]
■94751 / 1階層)  Re[1]: Treeviewを選択してイベント実行
□投稿者/ 魔界の仮面弁士 (2713回)-(2020/05/12(Tue) 15:55:23)
No94749 (マリ夫 さん) に返信
> TreeView1.AfterSelectでイベントを走らせているのですが、例えば、LIST1-AAを選択してイベント後、
> 再度LIST1-AAを選択した時、イベントが走りません。

AfterSelect は、「他のノード」が選択された後に発生します。
選択済みのノードを再選択しても、「既に選択済み」なので、イベントは発生しません。

また、ノードを選択するには、マウスやキーボードなどの方法がありますが、
現状はどのように選択していますか?

Public Class Form1
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        With TreeView1.Nodes.Add("TEST1").Nodes
            .Add("TEST1-A").Nodes.Add("LIST1-AA")
            .Add("TEST1-B").Nodes.Add("LIST1-BB")
            .Add("TEST1-C").Nodes.Add("LIST1-CC")
        End With
        TreeView1.ExpandAll()
    End Sub

    Private Sub TreeView1_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TreeView1.AfterSelect
        ListBox1.Items.Insert(0, String.Format("{0}, {1}", e.Node.Text, e.Action))
    End Sub
End Class

[ 親 94749 / □ Tree ] 返信 編集キー/

▲[ 94751 ] / ▼[ 94753 ]
■94752 / 2階層)  Re[2]: Treeviewを選択してイベント実行
□投稿者/ マリ夫 (8回)-(2020/05/12(Tue) 16:04:34)
No94751 (魔界の仮面弁士 さん) に返信
> ■No94749 (マリ夫 さん) に返信
>>TreeView1.AfterSelectでイベントを走らせているのですが、例えば、LIST1-AAを選択してイベント後、
>>再度LIST1-AAを選択した時、イベントが走りません。
>
> AfterSelect は、「他のノード」が選択された後に発生します。
> 選択済みのノードを再選択しても、「既に選択済み」なので、イベントは発生しません。
なるほど
だからイベントが発生しなかったんですね

>
> また、ノードを選択するには、マウスやキーボードなどの方法がありますが、
> 現状はどのように選択していますか?
キーボードでの選択は行わず、マウスのみで選択を行う想定です。
[ 親 94749 / □ Tree ] 返信 編集キー/

▲[ 94752 ] / ▼[ 94754 ]
■94753 / 3階層)  Re[3]: Treeviewを選択してイベント実行
□投稿者/ 魔界の仮面弁士 (2714回)-(2020/05/12(Tue) 16:08:49)
No94752 (マリ夫 さん) に返信
>>また、ノードを選択するには、マウスやキーボードなどの方法がありますが、
>>現状はどのように選択していますか?
> キーボードでの選択は行わず、マウスのみで選択を行う想定です。

であれば、AfterSelect のかわりに NodeMouseClick イベントは如何でしょう?


なお、現在選択中の祖先ノードが折りたたまれた場合、
選択されているノードが変更される点に注意してください。
それでは都合が悪い場合は、[+]/[-] を使えなくしてしまうか、
あるいは CheckBoxes プロパティで代用するという手もあります。

[ 親 94749 / □ Tree ] 返信 編集キー/

▲[ 94753 ] / 返信無し
■94754 / 4階層)  Re[4]: Treeviewを選択してイベント実行
□投稿者/ マリ夫 (9回)-(2020/05/12(Tue) 16:35:19)
No94753 (魔界の仮面弁士 さん) に返信
> ■No94752 (マリ夫 さん) に返信
> >>また、ノードを選択するには、マウスやキーボードなどの方法がありますが、
> >>現状はどのように選択していますか?
>>キーボードでの選択は行わず、マウスのみで選択を行う想定です。
>
> であれば、AfterSelect のかわりに NodeMouseClick イベントは如何でしょう?
>
>
> なお、現在選択中の祖先ノードが折りたたまれた場合、
> 選択されているノードが変更される点に注意してください。
> それでは都合が悪い場合は、[+]/[-] を使えなくしてしまうか、
> あるいは CheckBoxes プロパティで代用するという手もあります。
>
NodeMouseClickのプロパティでクリックしたノードのLevelを条件にイベントを走らせるようにしたら、上手く動作しました。
ありがとうございました。
解決済み
[ 親 94749 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -