2013-05-13 2 views
1

У меня есть элемент управления WebBrowser в форме.Suppress WebBrowser mailto

Я хочу, чтобы, когда пользователь нажмет на ссылку (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, но, вероятно, относится и к вашему делу. Вы регистрируетесь на навигационном мероприятии. Это событие отменяемое так, если при обращении события набора 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

это работает для меня: 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; } AlonMln