ユーザーが既存の TreeNode を TreeView 内のどこかにドラッグすることで開始されるドラッグ/ドロップ イベントをキャプチャすることに興味があります。ユーザーが TreeNode をドラッグしている間、ノードが 2 つのツリー ノード間でドラッグされたときにキャプチャすることに関心があります。ユーザーがこれを行うとき、ツリー ノード間にハッシュ マークを表示して、ノードが子としてノード内にドロップされるか、兄弟としてノード内にドロップされるかを指定したいと考えました。このハッシュ マークは、次のいずれかを表示します。宛先ノード)、前または後...
DragOver イベントを使用して、ある程度の前進を遂げました。マウスの位置を計算し、マウスをドラッグしながら上下のノードを導き出しています。
int threshold = 8; //Joe(hack)
Point mouseLocation = mouseLocation = treeViewConditions.PointToClient(new Point(e.X, e.Y - threshold));
TreeNode topNode = treeViewConditions.GetNodeAt(mouseLocation);
mouseLocation = treeViewConditions.PointToClient(new Point(e.X + threshold, e.Y));
TreeNode bottomNode = treeViewConditions.GetNodeAt(mouseLocation);
if (topNode != null && bottomNode == null)
{
textBoxDescription.Text = "handling top node";
}
else if (topNode == null && bottomNode != null)
{
textBoxDescription.Text = "handling bottom node";
}
else if (topNode != null && bottomNode != null)
{
if (topNode != bottomNode)
{
textBoxDescription.Text = "between!";
}
else if (topNode == bottomNode)
{
}
}
しかし、これを行うと、ただ汚いと感じます。これを達成するためのより良い方法を誰かが知っていたかどうか疑問に思っています。
事前にたくさんありがとう!