zoukankan      html  css  js  c++  java
  • wpf中遍历界面控件的方法

      /// <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);

  • 相关阅读:
    bzoj 1030 [JSOI2007]文本生成器
    Swift 学习笔记 (闭包)
    Swift 学习笔记 (函数)
    HTML 学习笔记 JQueryUI(Interactions,Widgets)
    HTML 学习笔记 JQuery(表单,表格 操作)
    HTML 学习笔记 JQuery(animation)
    HTML 学习笔记 JQuery(盒子操作)
    HTML 学习笔记 JQuery(事件)
    HTML 学习笔记 JQuery(DOM 操作3)
    HTML 学习笔记 JQuery(DOM 操作2)
  • 原文地址:https://www.cnblogs.com/guiqiang/p/4632654.html
Copyright © 2011-2022 走看看