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. ここでカーソルを変更 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 に答える