TreeNodeViewでノードの選択時に何らかの処理をしてる場合に注意すること
TreeNodeViewのノード選択時に処理をすることって多いと思います。
ノードが多いことが予想される場合など、動的にツリーを生成したりするのに便利ですよね。
他にも、選択してるノードの詳細をどこかに転記してみたりとか。とか。
通常、ノードの選択時に処理を行う場合は、AfterSelectイベントに処理を書きますよね。
しかしAfterSelectイベントは、ノードが削除されるとき(hogehogeTreeView.Nodes.Clear();が実行されるとき)
でも発生してしまうので、余分にイベントが発生してしまうことになります。
というわけで、普段の選択時とちゃんと区別しましょう、というお話。:-)
つっても例によってコード載せるだけなんですがー
private void hogehogeTreeView_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) { if(e.Action != TreeViewAction.Unknown){ //何か処理hogehogehogehoge } }
とまぁ、こんな感じで
TreeViewAction列挙値には、ByMouse、ByKeybord、Collapse、Expand、Unknownがあります。
他のメソッドなどで自動的に呼ばれた場合はどうやらUnknownが格納されるようです。
なので、それ以外のとき(手動で選択したとき)にだけ処理を実行するようにすればいいかと。