0

ドラッグ/ドロップをサポートしているツリービューにドラッグ/ドロップを実装しています。

ツリーにはフォルダとファイルがあります。フォルダーの下部 25% をドラッグすると、並べ替えたい。treeviewitem の上部 75% をドラッグすると、コンテンツがフォルダーにドロップされます。

要素内の自分の位置を特定するにはどうすればよいですか? これがうまくいかない私の試みです:

    private bool ShouldReorder(TreeViewItem targetItem)
    {
        var relativePosition = PointToScreen(Mouse.GetPosition(targetItem));
        return relativePosition.Y/targetItem.ActualHeight < 0.25;
    }

このコードには、負の相対位置があります。

4

2 に答える 2

1

画面座標に変換した後、親コントロールのクライアント座標に戻すことができます

Parent.PointToClient(screenpt) ;
于 2012-04-19T22:28:34.407 に答える
0

次のコードを使用して、グローバル マウス イベントを消費しました (このコードは、ウィンドウ フォーカスに関係なくグローバル x/y 位置データも取得できます)。

http://www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C

私のプログラムの場合:

http://www.codeproject.com/Articles/347795/Inactivity-Logoff

于 2012-04-19T23:22:59.403 に答える