【问题标题】:Control Drag Drop控制拖放
【发布时间】:2011-10-11 03:37:00
【问题描述】:

我在 Windows 窗体上有一个 c# 中的用户控件,拖放事件仅在控件边缘触发,有没有人知道是什么原因导致我发疯!?

private void flowDiagram1_DragEnter(object sender, DragEventArgs e)
{
  if(e.Data.GetDataPresent(DataFormats.Text))
    e.Effect = DragDropEffects.Move;
  else
    e.Effect = DragDropEffects.None;
}

private void flowDiagram1_DragOver(object sender, DragEventArgs e)
{
  if (!m_bDragging)
    flowDiagram1_DragDrop(sender, e);
}

private void flowDiagram1_DragDrop(object sender, DragEventArgs e)
{
  MessageBox.Show("Drop");
}

【问题讨论】:

  • 无法为控件提供代码,它只是一个我正在使用的 dll,但即使我创建自己的控件,它似乎也会发生,但是当我拖放时,我只需执行以下操作
  • private void flowDiagram1_DragEnter(object sender, DragEventArgs e) { if(e.Data.GetDataPresent(DataFormats.Text)) e.Effect = DragDropEffects.Move;否则 e.Effect = DragDropEffects.None; } private void flowDiagram1_DragOver(object sender, DragEventArgs e) { if (!m_bDragging) flowDiagram1_DragDrop(sender, e); } private void flowDiagram1_DragDrop(object sender, DragEventArgs e) { MessageBox.Show("Drop"); }
  • 问题只有在放到控件上时才会出现,如果它只是一个面板,那么它就可以了

标签: c# winforms drag-and-drop controls


【解决方案1】:

我认为你也需要添加这个来拖动:

if(e.Data.GetDataPresent(DataFormats.Text))
    e.Effect = DragDropEffects.Move;
  else
    e.Effect = DragDropEffects.None;

【讨论】:

    猜你喜欢
    • 2010-10-02
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    相关资源
    最近更新 更多