在网络浏览器上捕获DragEnter和DragDrop事件 [英] Catch DragEnter and DragDrop events on webbrowser

查看:141
本文介绍了在网络浏览器上捕获DragEnter和DragDrop事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有TreeView,ListView和WebBrowser控件。我使用拖放方法。使用TreeView和ListView可以正常工作,因为它们具有Dragdrop和DragEnter事件。
但是我没有在WebBrowser中找到它们。

I have TreeView, ListView and WebBrowser controls. I use the drag and drop method. With the TreeView and ListView everything works, because they have Dragdrop and DragEnter event. But I did not find them in WebBrowser.

我尝试使用:

webBrowser1.Document.Body.Drag += new HtmlElementEventHandler(WebBrowser_Drag);
webBrowser1.Document.Body.DragOver += new HtmlElementEventHandler(WebBrowser_DragOver);
webBrowser1.Document.Body.DragEnd += new HtmlElementEventHandler(WebBrowser_DragEnd);
webBrowser1.Document.Body.DragLeave += new HtmlElementEventHandler(WebBrowser_DragLeave);

触发了DragOver和DragLeave事件,但无法像

The DragOver and DragLeave events triggered, but it is not possible to change the cursor like

e.Effect = DragDropEffects.None;

没有触发Drag和DragEnd事件。

The Drag and DragEnd events is not triggered.

我也尝试:

webBrowser1.Document.Body.AttachEventHandler("dragdrop", WebBrowser_DragDrop);
webBrowser1.Document.AttachEventHandler("dragdrop", WebBrowser_DragDrop);
webBrowser1.Document.AttachEventHandler("ondrop", WebBrowser_OnDrop);
webBrowser1.Document.Body.AttachEventHandler("ondrop", WebBrowser_OnDrop);

,但效果不佳。

现在我有一些问题:


  1. 如何在DragOver和DragLeave事件中更改光标。

  2. 是否可以处理WebBrowser的数据以及Dragdrop和DragEnter?


推荐答案


  1. 在此处更改光标更改网络浏览器光标。但是不幸的是,在可能的游标中没有拖放游标。

  2. 解决我发现的问题的最简单方法是使用透明面板清除透明面板的图形C#

  1. Changing the cursor here Change webbrowser Cursor. But among the possible cursors unfortunately no draganddrop cursor.
  2. The easiest way to solve my problem that I have found is to use a transparent panel Clearing the graphics of a transparent panel C#:

private void WebBrowser_DragOver(object sender, HtmlElementEventArgs e)
{
    panel.BringToFront();
}

private void Panel_DragLeave(object sender, EventArgs e)
{
    panel.SendToBack();
}

private void Panel_MouseLeave(object sender, EventArgs e)
{
    panel.SendToBack();
}

private void Panel_DragEnter(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.Move;
}

private void Panel_DragDrop(object sender, DragEventArgs e)
{
    //Make dragdrop data processing
}


这篇关于在网络浏览器上捕获DragEnter和DragDrop事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆