1

次のコードは、マウスの右クリックでのドラッグ アンド ドロップの動作を拒否します。マウスを右クリックすると、適切なコンテキスト メニューが表示されますが、 DragDrop 、 DragEnter 、および DragOver のイベント ハンドラーがあるにもかかわらず、ドラッグ アンド ドロップできません。同じ右クリックでコンテキスト メニューとドラッグ アンド ドロップを使用できないためですか? 私は何を間違っていますか?よろしくお願いいたします。

private void treeList1_MouseDown(object sender, MouseEventArgs e)
{
    TreeList tree = sender as TreeList;
    Point pt = tree.PointToClient(MousePosition);
    TreeListHitInfo info = tree.CalcHitInfo(pt);

    if (e.Button == MouseButtons.Right && ModifierKeys == Keys.None && tree.State == TreeListState.Regular)
    {
        if (nodeType == typeof(X))
        {
            tree.ContextMenuStrip = XContextMenu;
            tree.FocusedNode = info.Node;
            treeList1.AllowDrop = true;
            tree.AllowDrop = true;
        }
        currentFocusNode = tree.FocusedNode;
        return;
    }
}
4

2 に答える 2

1

たとえば、listViewにdragDropを実行する方法は次のとおりです。

private void Form1_Load(object sender, EventArgs e)
{
    listView1.AllowDrop = true;
    listView1.DragDrop += new DragEventHandler(listView1_DragDrop);
    listView1.DragEnter += new DragEventHandler(listView1_DragEnter);
}

void listView1_DragEnter(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.Copy;
}

void listView1_DragDrop(object sender, DragEventArgs e)
{
    listView1.Items.Add(e.Data.ToString());
}
于 2013-02-04T16:11:29.117 に答える
1

DoDragDropメソッドを呼び出していません。

DragDrop の使用例を次に示します。

あなたの例では、このようなものをreturn;

treeList1.DoDragDrop(currentFocusNode, DragDropEffects.Copy);
于 2013-02-04T15:25:25.570 に答える