wpf中遍历界面控件的方法

摘要:
//////遍历界面中的所有控件//////privatevoidSetNotEditable(UIElementCollectionuiControls){foreach(UIElementelementinuiControls){if(elementisTextBox){(elementasT

/// <summary>
/// 遍历界面中的所有控件
/// </summary>
/// <param name="uiControls"></param>
private void SetNotEditable(UIElementCollection uiControls)
{
foreach (UIElement element in uiControls)
{
if (element is TextBox)
{
(element as TextBox).IsEnabled = false;
}
else if (element is ListBox)
{
if ((element as ListBox).Items.Count > 0)
{
(element as ListBox).ScrollIntoView((element as ListBox).Items[(element as ListBox).Items.Count - 1]);
}
}
else if (element is Grid)
{
this.SetNotEditable((element as Grid).Children);
}
else if (element is Expander)
{
if ((element as Expander).Content is StackPanel)
{
StackPanel sa = (element as Expander).Content as StackPanel;
this.SetNotEditable(sa.Children);
}
else if ((element as Expander).Content is Grid)
{
Grid sa = (element as Expander).Content as Grid;
this.SetNotEditable(sa.Children);
}
}
else if (element is StackPanel)
{
this.SetNotEditable((element as StackPanel).Children);
}
else if (element is ScrollViewer)
{
StackPanel sp = (element as ScrollViewer).Content as StackPanel;
this.SetNotEditable(sp.Children);
//ScrollViewer不具有Children属性,无法对其进行遍历,但是具有Content属性,作为容器型控件,一般都可以通过这样的方法来解决。
}
else if (element is TabControl)
{
SetTabControl(element as TabControl);
}
}
}
//遍历TabControl TabControl下面可能还会有grid 这时还需要调用上面的方法
private void SetTabControl(TabControl uiControls)
{
//遍历TabControl
var temp = uiControls.Items;
//var temp = this.tabControl1.Items;
foreach (TabItem item in temp)
{
if (item.Content is Button)
{
//MessageBox.Show((item.Content as Button).Content.ToString());
}
else if (item.Content is TextBox)
{
(item.Content as TextBox).IsEnabled = false;
}
else if (item.Content is ComboBox)
{
(item.Content as ComboBox).IsEnabled = false;
}
else if (item.Content is Grid)
{
//若TabControl中嵌套grid
this.SetNotEditable((item.Content as Grid).Children);
}
}
}

//方法调用

SetNotEditable(mygrid.Children);

免责声明:文章转载自《wpf中遍历界面控件的方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇chrome安装json美化软件 JSONViewES简单工具类ESUtil下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF Geometry几何图形数据图标

相信大家在阅读WPF相关GitHub开源项目源码时都会看见一串串这种数据这种Geometry数据就是几何图形数据 为什么要用Geometry数据做图标? 有一种做法是使用ttf字体文件代替,不过使用ttf字体文件会出现下面几个缺点:1、团队协作不便于管理2、需要依赖特定平台3、无法灵活使用而使用Geometry的话,我们可以将这些几何图形数据存入资源字典R...

python+selenium十四:xpath和contains模糊匹配

xpath可以以标签定位,也可以@任意属性: 如:以input标签定位:driver.find_element_by_xpath("//input[@id='kw']") 如:@type属性:driver.find_elements_by_xpath("//input[@type='text']") 一、xpath定位 1、常规属性 1.通过id定位dri...

WPF基础到企业应用系列6——布局全接触

转自:http://www.cnblogs.com/KnightsWarrior/archive/2010/08/02/1790131.html 2010-08-02 05:21        by        圣殿骑士,        11455阅读,        89评论,        收藏,        编辑 一. 摘要   首先很高兴这个...

WPF系列学习

1:WPF最小化到系统托盘 2:WPF程序单例运行 3:WPF中三种异常捕获:UI线程异常、非UI线程异常、Task线程异常 在窗体放一个按钮在单击事件执行如下代码来模拟。 private void Button_Click(objectsender, RoutedEventArgs e) { //t...

web常用自动化库——selenium总结

概述 selenium是一个模拟控制浏览器操作的自动化库,它可以做到元素定位,鼠标事件,浏览器事件,js脚本执行等操作 与request不同的是,request是单独请求一个http,而selenium则是以浏览器方式加载整个页面流,所以那些异步的请求也不用像request一样去分析接口,一切都像浏览器一样,所见即所得。 优点是: 1.所见即所得,不用考虑...

WPF Button添加图片

0、更改模板 效果: 代码: <Button x:Name="m_HelpButton"IsEnabled="True"Width="23"Height="23"Click="m_HelpButton_Click"> <Button.Template> <...