我有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);
但效果不佳。
现在我有一些问题:
答案 0 :(得分:2)
我找到解决问题的最简单方法是使用透明面板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
}