Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 抑制WebBrowser邮件_C#_Webbrowser Control_Mailto - Fatal编程技术网

C# 抑制WebBrowser邮件

C# 抑制WebBrowser邮件,c#,webbrowser-control,mailto,C#,Webbrowser Control,Mailto,我有一个表单中的WebBrowser控件 我希望,当用户单击链接(href with mailto)时,它将注册到已单击按钮的网站,但不会打开新窗口(Outlook或任何其他网站) 我已找到此代码,但它不起作用: private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { TextReader tr = File.OpenText(webBrowse

我有一个表单中的WebBrowser控件

我希望,当用户单击链接(href with mailto)时,它将注册到已单击按钮的网站,但不会打开新窗口(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();
    }
}

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

这适用于WP8 webbrowser,但可能也适用于您的情况。 您已注册到导航事件。 该事件是可取消的,因此如果在处理事件集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;
    }

这对我来说很有效:
private void webBrowser1_Navigating(object sender,WebBrowserNavigatingEventArgs e){//获取uri字符串,不确定方法名称字符串uri=e.Url.AbsoluteUri;if(uri.StartsWith(“mailto”))e.Cancel=true;}