鼠标可以点击不能拖动 WinForm的鼠标拖拽功能
WinForm的鼠标拖拽功能
WinForm的鼠标拖拽功能
功能 此代码实现的是从资源管理器窗口选中一个或多个文件 拖入WinForm窗体中 WinForm后台代码变会得到被拖入的文件列表
思路 通过DragEnter事件获得被拖入窗口的 信息 (可以是若干文件 一些文字等等) 在DragDrop事件中对 信息 进行解析
画面设计
窗体的AllowDrop属性必须设置成true
且必须有DragEnter事件(单独写DragDrop事件是不会具有拖拽功能的)
画面的Designer Code(frmMain Designer cs)
//
// frmMain
//
this AllowDrop = true;
this DragDrop += new System Windows Forms DragEventHandler(this frmMain_DragDrop);
this DragEnter += new System Windows Forms DragEventHandler(this frmMain_DragEnter);
//
// dgv
//
this dgv AllowDrop = true;
this dgv DragEnter += new System Windows Forms DragEventHandler(this frmMain_DragEnter);
this dgv DragDrop += new System Windows Forms DragEventHandler(this frmMain_DragDrop);
Form的后台代码
重要代码 e Effect = DragDropEffects Link;

(注 DragDropEffects枚举类型还有其他值 有兴趣的可以参照MSDN的帮助
us/library/system windows forms dragdropeffects aspx )
WinForm&DataGridView事件
#region DragEnter(Form&DataGridView)
/// <summary>
/// DragEnter
/// </summary>
/// <param name= sender ></param>
/// <param name= e ></param>
private void frmMain_DragEnter(object sender DragEventArgs e)
{
//以下の文がなければ 「frmMain_DragDrop」も役に立たなくなる
e Effect = DragDropEffects Link;
}
#endregion
#region DragDrop(Form&DataGridView)
/// <summary>
/// DragDrop
/// </summary>
/// <param name= sender ></param>
/// <param name= e ></param>
private void frmMain_DragDrop(object sender DragEventArgs e)
{
DataDisplay(e);
this Activate();
}
lishixinzhi/Article/program/net/201311/11510