C#wpf遍历网格以查找所有Web浏览器并隐藏它们

时间:2014-10-21 20:51:08

标签: c# wpf grid webbrowser-control

当我尝试这段代码时:

foreach (Control ctrl in Grid1.Children)
            {
                    ctrl.Visibility = System.Windows.Visibility.Hidden;
             }

甚至是这个,这是我真正想要做的事情:

foreach (WebBrowser wb in Grid1.Children)
            {
                    wb.Visibility = System.Windows.Visibility.Hidden;
             }

并且它给了我一个例外:无法转换类型为' System.Windows.Controls.WebBrowser'键入' System.Windows.Controls.Control'。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

简短的回答是在你对它进行任何操作之前检查每个控件是否为WebBrowser

foreach (var ctrl in Grid1.Children)
{
    if (ctrl is WebBrowser)
        ((WebBrowser)ctrl).Visibility = System.Windows.Visibility.Hidden;
}

但是,您尝试使用WPF,就好像它是Windows窗体一样。它不像Windows Forms,所以你应该接受它并尝试以WPF方式做事。因此,更长的答案是正确使用WPF,并使用bool将数据绑定到WebBrowser.Visibility属性的数据。在这种情况下,您可以通过在视图模型或代码中设置单个属性来隐藏它们:

BooleanToVisibilityConverter

你可以在网上找到很多这样的例子,甚至可以在这个网站上找到。如果你使用WPF方式,你会发现WPF更容易使用。

答案 1 :(得分:0)

您正在寻找的是' OfType':

    foreach (WebBrowser wb in grid1.Children.OfType<WebBrowser>())
        wb.Visibility = System.Windows.Visibility.Hidden;