2013-05-13 44 views
1

我有一個窗體中的WebBrowser控件。取消WebBrowser郵件到

我希望當用戶點擊一個鏈接(HREF與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(); 
    } 
} 

答案不必是如何解決這個問題的代碼,如果有一個更簡單的方法來做到這一點?會好起來的。

回答

2

這適用於WP8瀏覽器,但也可能適用於您的情況。 您註冊了導航事件。 private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e) { //take the uri string, not sure is the right method name string uri = e.Url.AbsoluteUri; if (uri.StartsWith("mailto")) e.Cancel = true; } : 所以如果在處理設置e.Cancel =真正的事件,它阻止導航

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; 
    } 
+0

這個工作對我來說這事件是取消 – AlonMln 2013-05-13 09:09:29