C#TreeView.GetNodeAt()をクリックする画像に問題
質問
私はいくつかのものを行うにはツリービュー上でクリックイベントを使用しています。
:私はこのように、マウスの座標でGetNodeAt()を呼び出すことで、クリックされたノードを取得することによって、これを行いますprivate void TreeView_Click(object sender, System.EventArgs e)
{
MouseEventArgs mouseEventArgs = e as MouseEventArgs;
if (mouseEventArgs == null)
return;
// Get the node that is being clicked.
TreeNode node = this.GetNodeAt(mouseEventArgs.X, mouseEventArgs.Y);
// Do other stuff...
}
ノードイメージがGetNodeAt(その後、クリックされたときにクリックが、ノードのラベルにあるときにしかし、GetNodeAt()メソッドのみ動作します)nullを返します。ノードは、画像をクリックすると、実際に選択されているが、私はそれが何であるかのノードを見つけることができませんので、これは少し面倒です。
誰もが何か提案はありますか?
更新: 私の代わりにselectedNodeのを使用するためにいくつかの提案を得ています。 Clickイベントが発射された後、それが設定されていますので、私はできません。この実際のツリービューとそれがないそれ自身のClickedイベントを発生さが、TreeNodeのではなく、ツリーノード自体の表す基になるデータとさを継承コントロールでます。
更新:誰かが私は実現しなかった、この動作を、導入我々のコードでGetNodeAt()メソッドをオーバーライドしていたことが判明。そこで問題は無効であるとGetNodeAt()メソッドでの問題はありません。なぜ誰かが、これは謎のままだろう。 :)
解決
あなたがBeforeSelectまたはAfterSelectイベントを試してみましたか?次に、あなたのClickイベントでそれを使用し、ストレートTreeViewCancelEventArgsから選択されたノードを取得することができます。
編集:追加の思想:私はこれを見ることができる唯一の問題はBeforeSelectイベントが実際に発生させていることであるの の後にのをクリックし、MouseClickとイベント
別の編集:あなたは火災がクリックする前に、あなたがNodeMouseClickを使用できることをイベントが必要な場合 - TreeNodeMouseClickEventArgsは、ノードのプロパティを持っている。
を。他のヒント
なぜちょうどTreeView.SelectedNode
を使わないのでしょうか?
試します:
TreeNode node = this.SelectedNode;
編集:ショーンによってパンチに打た