给Webbrowser的图片添加点击事件,在使用webBrowser1_DocumentCompleted时,出现多次事件的处理方法:
1.方法一判断WebBrowserReadyState的状态是否是Complete
if (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
//MessageBox.Show("b");
//没有加载完成,直接返回
return;
}
2.判断Url的路径是否变化
if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath)
{ return; }
3.在添加事件之前先去除事件,防止重复添加
ele.DetachEventHandler("onclick", Document_Click);
ele.AttachEventHandler("onclick", Document_Click);
webBrowser点击链接下载文件时,弹出提示框,并且页面不跳转到下载页面直接下载
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if (e.Url.Segments[e.Url.Segments.Length - 1].EndsWith(".exe"))
//下载文件的后缀名
{
e.Cancel = true;
string filepath = null;
SaveFileDialog1.FileName = e.Url.Segments[e.Url.Segments.Length - 1];
if (SaveFileDialog1.ShowDialog() == DialogResult.OK)//弹出对话框
{
filepath = SaveFileDialog1.FileName;
WebClient client = new WebClient();
client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
client.DownloadFileAsync(e.Url, filepath);
}
}
}
void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
MessageBox.Show("File downloaded");
}