winform,WebBrowser控件盖满整个form,文件拖放的问题

he_8134 2008-12-24 09:03:12
如题,Form上面一个WebBrowser控件~~

问题,文件拖放到WebBrowser上方响应不了Form的拖放事件,咋办?
...全文
187 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
he_8134 2008-12-25
  • 打赏
  • 举报
回复
楼上代码可解决问题~~谢谢啦!!

bs csdn~~ie6现在居然不能登录~~~
starts_2000 2008-12-24
  • 打赏
  • 举报
回复

public class WebBrowserEx : WebBrowser
{
private const int WM_DROPFILES = 0x233;

[DllImport("shell32.dll")]
private static extern uint DragQueryFile(
IntPtr hDrop,
uint iFile,
StringBuilder lpszFile,
uint cch);

[DllImport("shell32.dll")]
private static extern void DragAcceptFiles(IntPtr hWnd, bool fAccept);

public WebBrowserEx()
: base()
{
base.AllowWebBrowserDrop = false;
}

public event DragFileEventHandler DragFile;

protected override void OnHandleCreated(EventArgs e)
{
base.OnHandleCreated(e);
if (!DesignMode)
{
DragAcceptFiles(Handle, true);
}
}

protected override void WndProc(ref Message m)
{
StringBuilder sb = new StringBuilder(1024);
if (m.Msg == WM_DROPFILES)
{
uint count = DragQueryFile(m.WParam, 0xffffffff, null, 0);
string[] files = new string[count];
for (uint i = 0; i < count; i++)
{
DragQueryFile(m.WParam, i, sb, 1024);
files[i] = sb.ToString();
}
OnDragFile(new DragFileEventArgs(files));
return;
}

base.WndProc(ref m);
}

protected virtual void OnDragFile(DragFileEventArgs e)
{
if (DragFile != null)
{
DragFile(this, e);
}
}
}

public delegate void DragFileEventHandler(
object sender,
DragFileEventArgs e);

public class DragFileEventArgs : EventArgs
{
private string[] _files;

public DragFileEventArgs(string[] files)
{
_files = files;
}

public string[] Files
{
get { return _files; }
}
}
ICanUseThisID 2008-12-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ICanUseThisID 的回复:]
楼主可以从WebBrowser派生一个类,然后重载WndProc,收到wm_dropfiles时通知主窗口
[/Quote]
试了一下,此方法好像不行,呵呵
yagebu1983 2008-12-24
  • 打赏
  • 举报
回复
关注!!
up!!
starts_2000 2008-12-24
  • 打赏
  • 举报
回复
mark
ICanUseThisID 2008-12-24
  • 打赏
  • 举报
回复
楼主可以从WebBrowser派生一个类,然后重载WndProc,收到wm_dropfiles时通知主窗口
wzuomin 2008-12-24
  • 打赏
  • 举报
回复
WebBrowser控件盖满整个form,触发不了 form的事件了。

可以直接把文件拖放到WebBrowser控件的。
刚才试了一个文本文件,拖放到WebBrowser控件,直接就打开了。
wzuomin 2008-12-24
  • 打赏
  • 举报
回复
WebBrowser控件盖满整个form,触发不了 form的事件了。

可以直接把文件拖放到WebBrowser控件的。
刚才试了一个文本文件,拖放到WebBrowser控件,直接就打开了。
net5i 2008-12-24
  • 打赏
  • 举报
回复
不知道搂主到底指的是谁的拖放事件响应不了

WebBrowser控件默认是自动响应拖放事件的,在这个时候拖放消息已经被该控件给截获了,所以窗体没有响应到拖放事件。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧