我想不通为什么试图将文本从标准标签拖到记事本(或任何其他控件接受文本)不起作用。我看过文档和示例,但我没有看到问题。光标保持一个圆形,并且通过它的一条线,如果我注册一个FeedBack回调,事件总是NONE。创建一个标准的Windows窗体应用程序,放弃一个Label控件并注册MouseDown事件我有这个代码,我打电话给label1.DoDragDrop(label1,DragDropEffects.All | DragDropEffects.Link)。任何帮助,将不胜感激。从标准标签DoDragDrop不起作用
这里是我的表单代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DragDropLabel
{
public partial class Form1 : Form
{
Point m_ClickLocation;
bool _bDragging = false;
public Form1()
{
InitializeComponent();
}
private void OnLabelMouseDown(object sender, MouseEventArgs e)
{
m_ClickLocation = e.Location;
_bDragging = true;
}
private void OnLabelMouseMove(object sender, MouseEventArgs e)
{
if (_bDragging)
{
Point pt = e.Location;
Size dragSize = SystemInformation.DragSize;
if (Math.Abs(pt.X - m_ClickLocation.X) > dragSize.Width/2 ||
Math.Abs(pt.Y - m_ClickLocation.Y) > dragSize.Height/2)
{
DragDropEffects rc = label1.DoDragDrop(label1, DragDropEffects.All | DragDropEffects.Link);
_bDragging = false;
}
}
}
}
}
我想从Control派生的任何控件支持拖放。该标签被用作拖放源而不是目标。 – AlanKley 2010-09-27 00:05:36
@AlanKley:我意识到这一点。但是,标准文本框不接受拖放,因此您不能拖放它们。如果拖动到写字板或其他丰富的编辑控件,它应该可以正常工作。 – SLaks 2010-09-27 00:12:44
感谢SLaks,如果我将Max建议的更改使用lable1.text而不是label1,那么您对写字板和记事本是正确的。 – AlanKley 2010-09-27 00:59:32