質問

ノードがツリービューでクリックされたときに

私はいくつかのものを行うにはツリービュー上でクリックイベントを使用しています。

:私はこのように、マウスの座標で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;

編集:ショーンによってパンチに打た

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top