1

我在表单中有一个 WebBrowser 控件。

我希望当用户单击链接(使用 mailto 的 href)时,它将注册到单击该按钮的网站,但不会打开新窗口(Outlook 或任何其他网站都不会)。

我找到了这段代码,但它不起作用:

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    TextReader tr = File.OpenText(webBrowser1.Url.ToString());
    string  htmlFile = tr.ReadToEnd();
    tr.Close();
    tr.Dispose();

    if (htmlFile.Contains("mailto:"))
    {
        htmlFile = htmlFile.Replace("mailto:", @"mail");

        //Recreate new file with fixed html
        File.Delete(e.Url.LocalPath);
        TextWriter tw = File.CreateText(e.Url.LocalPath);
        tw.Write(htmlFile);
        tw.Flush();
        tw.Close();
        tw.Dispose();

        Refresh();
    }
}

答案不一定是如何修复此代码,如果有更简单的方法吗?会好起来的。

4

1 回答 1

2

这适用于 WP8 网络浏览器,但也可能适用于您的情况。您注册到导航事件。该事件是可取消的,因此如果当您处理事件集 e.Cancel=true 时,它​​会阻止导航

private void OnNavigating(object sender, NavigatingEventArgs e)
    {
        //take the uri string, not sure is the right method name
        string uri = e.Uri.AbsoluteUri;
        if (uri.StartsWith("mailto"))
            e.Cancel = true;
    }
于 2013-05-13T08:45:09.853 回答