我正在创建一个最多包含10个标签的标签控件。我想为每个标签添加一个Web浏览器。用户可以控制显示的标签数量。通过对每个选项卡使用相同的控件来节省内存,或者为每个选项卡分别进行控制。以下是我正在尝试做的事情:
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;
}
或者我应该为所有标签使用一个WebBrowser控件和一个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;
}
很抱歉,如果有任何错误。我没有编译就编写了这个示例。此外,我在我的WPF应用程序中使用System.Windows.Form WebBrowser控件。我不得不使用WPF WebBrowser控件获取网页标题。希望这一切都有意义。谢谢。
大卫
答案 0 :(得分:1)
在for
循环中维护要容易得多。所以第二部分代码将更加可维护。
我还建议您深入了解WPF and MVVM.使用浏览器控件的视图可以很容易地重用和实例化。此模式允许您抽象出您的视觉元素,并只关注您想要呈现的数据,在这种情况下,您的网页。