#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");
}
Просто чтобы посмотреть, поможет ли это.