我正在创建一个有多达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控件返回网页标题时出现了许多不一致之处。希望这一切都有意义。谢谢。
大卫
发布于 2014-01-15 22:18:45
在for循环中进行维护要容易得多。因此,第二段代码的可维护性将大大提高。
我还建议您深入了解WPF和MVVM --一个带有浏览器控件的视图可以非常容易地重用和实例化。这种模式允许你抽象出你的视觉元素,只关注你想要呈现的数据,在这种情况下,你的网页。
https://stackoverflow.com/questions/21146006
复制相似问题