一.原理解释
在winform桌面程序设计过程中,实现鼠标拖动复制文本功能应用还是比较广泛的。
如上图所示,鼠标拖动将源数据复制到目标数据。整个过程是以事件触发为基础,所使用的事件有3个:
第一:TextBox的MouseMove事件,引发条件为鼠标指针移过TextBox控件。此事件实现捕捉拖放操作。
第二:TextBox的DragDrop事件,引发条件为TextBox控件拖放操作完成。此事假实现目标数据更新显示。
第三:TextBox的DragEnter事件,引发条件为鼠标将源数据拖动到TextBox控件的工作区。此事件实现将拖动操作的源数据转移到目标数据。
其中事件数据这个参数应用也很关键,这里是MouseEventArgs和DragEventArgs,这两个对象为拖放功能提供数据。
二.具体代码
//源数据的拖放操作
private void txt1_MouseMove(object sender, MouseEventArgs e)
{
//判断是否按下鼠标左键
if (e.Button == MouseButtons.Left)
{
txt1.DoDragDrop(txt1.Text, DragDropEffects.Copy);
}
}
//目标数据的更新显示
private void txt2_DragDrop(object sender, DragEventArgs e)
{
//更新显示文本
txt2.Text = e.Data.GetData(DataFormats.Text).ToString();
}
//目标数据的拖放功能选择
private void txt2_DragEnter(object sender, DragEventArgs e)
{
//选择复制操作
e.Effect = DragDropEffects.Copy;
}
三.注意事项
1.一定要将目标数据的AllowDrop属性设置为True,该值指示控件是否接受用户拖放到它上面的数据,否则无法实现功能。