Новые экземпляры WebBrowser Control и памяти

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

    private System.Windows.Forms.WebBrowser webBrowser1 = null;
    private System.Windows.Forms.WebBrowser webBrowser2 = null;
    private System.Windows.Forms.WebBrowser webBrowser3 = null;

    // Display one tab
    switch (tabCount)
    {
            case 1:
                // tab 1
                tabItem1.Visibility = System.Windows.Visibility.Visible;
                webBrower1 = new WebBrowser();
                webBrowser1.Navigate(txtBoxServerURL.Text));
                // tab 2
                tabItem1.Visibility = System.Windows.Visibility.Collapsed;
                webBrower2 = null;
                break;
                // process remaining tabs and set each webBrowser(2,3,4...) to null
            case 2:
                // tab 1
                tabItem1.Visibility = System.Windows.Visibility.Visible;
                webBrower1 = new WebBrowser();
                webBrowser1.Navigate(txtBoxServerURL.Text));
                // tab 2
                tabItem1.Visibility = System.Windows.Visibility.Visible;
                webBrower2 = new WebBrowser();
                webBrowser2.Navigate(txtBoxServerURL.Text));
                break;
                // tab 3
                tabItem1.Visibility = System.Windows.Visibility.Collapsed;
                webBrower3 = null;
                // process remaining tabs and set each webBrowser(3,4,5...) to null
            // define remaining cases
            default:
                break;
  }

или я должен использовать один элемент управления Web Browser и один элемент управления WindowsFormsHost для всех вкладок:

        for (int i = 0; i < comboCount; i++)
        {
            string title = "Tab Page " + (i + 1);
            TabItem tabItem = new TabItem();
            tabItem.Name = title;
            tabItem.Items.Add(tabPage);  
            System.Windows.Forms.WebBrowser.WebBrowser webBrowser = new System.Windows.Forms.WebBrowser.WebBrowser();
            webBrowser.Navigate(txtBoxServerURL.Text); 
            windowsFormHost.Child = webBrowser;           
        }

Извините, если есть какие-либо ошибки. Я написал этот пример без компиляции. Также я использую элемент управления System.Windows.Form WebBrowser в своем приложении WPF. Мне приходилось сталкиваться со многими несоответствиями, возвращая заголовок веб-страницы с помощью элемента управления WPF WebBrowser. Надеюсь, что все это имеет смысл. Спасибо.

Дэвид

1 ответ

Решение

Гораздо проще поддерживать в for петля. Таким образом, второй фрагмент кода будет значительно более удобен в обслуживании.

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

Другие вопросы по тегам