- PR -

TreeViewでのシングルクリックについて

1
投稿者投稿内容
ぶち
常連さん
会議室デビュー日: 2006/02/15
投稿数: 29
投稿日時: 2006-02-20 13:32
いつも参考にさせていただいてます。
TreeViewでのシングルクリックについての質問です。

TreeView上でノードをダブルクリックすることにより子ノードの
展開ができると思いますが、それをシングルクリックで行いたいと思っています。

ClickイベントをひろってExpand()をコールすることにより
一応できるのですが、以下のような問題が発生してしまいました。

・子ノードが展開されている時にノードの前にある
マイナスボタンをクリックしても折りたためない。

原因は、マイナスボタンをクリックしたときに折りたたんで
その後、Clickイベントの処理でまた展開してしまうからです。

原因はわかるのですが、対処をどうしたらいいかわかりません。
マイナスボタンをクリックしたときは通常と同じく子ノードを
折りたたみたいと思っています。

マイナスボタンをクリックしたときだけExpand()をコールしないように
したいのですが、そのようなことは可能でしょうか?

環境は以下のとおりです。
・VB.NET2003
・Windowsアプリケーション

以上、よろしくお願いします。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2006-02-20 13:37
諸農です。

試していませんが、IsExpandedプロパティで判定してみるとかはどうでしょうか。


_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2006-02-20 13:59
諸農です。


引用:

ClickイベントをひろってExpand()をコールすることにより
一応できるのですが、以下のような問題が発生してしまいました。



この現象以外にも、展開するノードの特定をSelectNodeでやってしまうと、
クリック前のノードを対象に展開してしまうと言った変な現象が起こりませんか?


AfterSelectイベントでこんな感じでやってみました(C#)。
コード:
private void treeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
    if (!e.Node.IsExpanded) e.Node.Expand();
}

private void treeView1_AfterCollapse(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
    treeView1.SelectedNode = null;
}



折りたたみの後に選択ノードを解除しています。
理由は、選択状態のまま-記号で折りたたまれたときに、
そのノードをクリックされてもAfterSelectイベントが
発生しないからです。

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
ぶち
常連さん
会議室デビュー日: 2006/02/15
投稿数: 29
投稿日時: 2006-02-20 14:19
諸農さん、返信ありがとございます。

引用:
この現象以外にも、展開するノードの特定をSelectNodeでやってしまうと、
クリック前のノードを対象に展開してしまうと言った変な現象が起こりませんか?



そうですね。
これについてはマウスの座標からノードを特定することにより回避できました。

引用:
折りたたみの後に選択ノードを解除しています。
理由は、選択状態のまま-記号で折りたたまれたときに、
そのノードをクリックされてもAfterSelectイベントが
発生しないからです。



ありがとうございます!うまくいきました!

Clickイベントにこだわっていたので他のイベントを使用する方法を
全く思いつきませんでした。
とても勉強になりました。


1

スキルアップ/キャリアアップ(JOB@IT)