Почему все страницы открываются в браузере по умолчанию, а не внутри формы?

#c# #.net #winforms #windows-xp #webbrowser-control

#c# #.net #winforms #windows-xp #webbrowser-управление

Вопрос:

Что я ожидаю, что произойдет

Веб-страница открывается внутри формы.

Ожидаемый

Что происходит на самом деле

Веб-страница открывается в браузере по умолчанию (в данном случае Chrome).

Проблема

Код

Navigate(string) Фрагмент копируется непосредственно из MSDN.

   using System;
  using System.Windows.Forms;

  namespace BrowserFrame
  {
      public partial class BrowserForm: Form
      {
          public BrowserForm()
          {
              InitializeComponent();
              Navigate("http://www.stackoverflow.com");
          }

          private void Navigate(String address)
          {
              if (String.IsNullOrEmpty(address)) return;
              if (address.Equals("about:blank")) return;
              if (!address.StartsWith("http://") amp;amp;
                  !address.StartsWith("https://"))
              {
                  address = "http://"   address;
              }
              try
              {
                  webBrowser1.Navigate(new Uri(address));
              }
              catch (System.UriFormatException)
              {
                  return;
              }
          }
      }
  }
  

Что я сделал до сих пор

  • Изменение браузера по умолчанию (например, IE, Firefox) открывает страницу в браузере по умолчанию.
  • webBrowser1.Navigate(new Uri("http://www.stackoverflow.com")); Прямое использование делает то же самое.
  • Пробовал вызывать Navigate из других событий (например, OnLoad, MouseClick); тот же результат.

Обновить

  • Оказывается, это происходит со всеми веб-элементами управления пользовательского интерфейса. (Отправил вопрос суперпользователю.)

Комментарии:

1. Я попробовал ваш код, и он работает правильно. В чем именно ваша проблема? Вы имели в виду, что страницы открываются в браузере на вашем компьютере, а не в веб-браузере, управляющем формой?

2. Попробуйте вызвать метод Navigate из другого места, а не из конструктора. Вызовите его из обработчика события OnLoad

3. @Lev добавил ваши предложения в «Что я сделал до сих пор», все еще не работает. Я думаю, что что-то не так с настройками моей ОС. (Задача: попробуйте на другом компьютере.)

4. Но что происходит? Страница открывается в браузере компьютера, а не в веб-браузере?

5. @Лев Да. Я задал этот вопрос суперпользователю , поскольку узнал, что затронуты все веб-элементы управления, а не только в WinForms.

Ответ №1:

Я не понимаю, почему он открывается во внешнем браузере, поскольку со мной этого не происходит, но вы можете попробовать это и посмотреть, имеет ли это какое-либо значение.

Вы пробовали:

webBrowser1.Navigate(address); без использования Uri?

Для меня это работает нормально, и ему не нужен http:// or https:// .

Я предполагаю, что они автоматизировали это в конструкторе класса для строк.

Или, возможно, вы могли бы попробовать перейти на эту простую версию:

 public BrowserForm()
{
     InitializeComponent();
     webBrowser1.Navigate("http://www.stackoverflow.com");
}
  

Просто чтобы посмотреть, поможет ли это.