【问题标题】:Implement Drag-Drop in Winforms using Treeview & Split Controls使用 Treeview 和拆分控件在 Winforms 中实现拖放
【发布时间】:2009-06-12 13:39:45
【问题描述】:

我有一个有 2 个拆分器的表单。 一个拆分器将表单水平拆分为 2 列。 另一个将左列分成 2 行。

在左侧列,顶部“行”我有一个树视图。 在右侧栏,我有一个图像查看器。

我想将一个树视图节点放到图像查看器上并用它做一些事情。

查看器称为“查看器”。树视图称为“EntityTreeView”

代码如下:

 private void viewer_DragEnter(object sender, DragEventArgs e)
    {
        e.Effect = DragDropEffects.Move;
    }

    private void viewer_DragDrop(object sender, DragEventArgs e)
    {
        TreeNode droppedNode;
        droppedNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
        MessageBox.Show(String.Format("You dropped a node with text: {0}\n on the viewer at X:{1} Y:{2}", droppedNode.Text, e.X, e.Y), "Drag Drop Finished", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }

    private void EntityTreeView_ItemDrag(object sender, ItemDragEventArgs e)
    {
        DoDragDrop(e.Item, DragDropEffects.Move);

    }

    private void EntityTreeView_DragDrop(object sender, DragEventArgs e)
    {
        e.Effect = DragDropEffects.Move;
    }


    private void EntityTreeView_DragEnter(object sender, DragEventArgs e)
    {
        e.Effect = DragDropEffects.None;
    }

但是,每当我抓住一个树视图节点并开始拖动它时,它会立即显示“否”图标(即,禁止吸烟标志.. 用斜线圈起来,不管它叫什么)。

知道我做错了什么吗?

提前感谢您的帮助。

【问题讨论】:

  • 您是否将所有相关控件的 AllowDrop 属性设置为 true?

标签: winforms treeview drag-and-drop


【解决方案1】:

到目前为止,您的代码看起来还不错。您需要做的是将“查看器”上的 AllowDrop 属性设置为 true

【讨论】:

  • 谢谢。这就是问题所在,我不知道我是如何忽略它的。
【解决方案2】:

需要将 DragEnter 事件中的 e.Effect 设置为 DragDropEffects.Move

private void EntityTreeView_DragEnter(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.Move    
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多