4

我有 TreeView、ListView 和 WebBrowser 控件。我使用拖放方法。使用 TreeView 和 ListView 一切正常,因为它们有 Dragdrop 和 DragEnter 事件。但我没有在 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 事件,但不能像这样更改光标

e.Effect = DragDropEffects.None;

不触发 Drag 和 DragEnd 事件。

我也尝试:

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?
4

1 回答 1

3
  1. 在此处更改光标Change webbrowser Cursor。但不幸的是,在可能的光标中没有拖放光标。
  2. 解决我发现的问题的最简单方法是使用透明面板清除透明面板 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
    }
    
于 2013-11-11T11:26:11.900 回答