C#中control的作用,示例:清空TextBox(轉)


     Control類是Form和各種Windows 窗體控件設備的基類,屬於System.Windows.Forms命名空間,每個window控件設備都有一個Controls屬性,這個屬性為ControlCollection類型,ControlCollection為一個Control對象的集合,包含的是屬於某個控件的所有控件對象,利用Control和ControlCollection我們可以輕松地對某個窗體程序所含的各種控件進行控制。 當我們開發具有錄入功能的界面的時候,為了防止提交后的二次(重復)錄入,希望點擊提交按鈕並提示成功后,界面的所有文本框能夠自動清空,一個笨方法是逐個的對TextBox進行Clear()操作,這種方法會產生大量的代碼,並且效率很低。

      對於上面所述的清空操作,可以仔細想一想,既然每個窗體控件都是繼承自Control類,並且含有Controls屬性,那利用Control和ControlCollection,利用函數的層層遞歸,就可以輕松實現Clear()操作,代碼如下:

 

        //清空頁面textbox的方法 小技巧
        private void Process(Control.ControlCollection c)
        {
            if (c.Count > 0)
            {
                foreach (Control c1 in c)
                {
                    //System.Windows.Forms.TextBox  僅限於windows自帶的textbox控件  
                    //使用第三方控件  傳入對應的語句
                    //如 DotNetbar 傳入 DevComponents.DotNetBar.Controls.TextBoxX
                    if ((c1.GetType().ToString().Equals("System.Windows.Forms.TextBox")))
                    {
                        ((TextBox)c1).Clear();
                    }
                    if (c1 != null)
                    {
                        Process(c1.Controls);
                    }
                    else
                    {
                        return;
                    }
                }
            }
            else
            {
                return;
            }
        }

        private void buttonX1_Click(object sender, EventArgs e)
        {
            //調用方法
            Process(this.Controls);
        }

 

 

 

    只需令Process()函數的參數為this.Controls,該函數就會層層遍歷,先查找直接放在Form中的TextBox,再遍歷到Panel(如果有的話),查找Panel中的TextBox,如果Panel中還有其他控件,就接着查找下一層次中的控件是否有Textbox,找到以后執行Clear()函數即可。這只是一個例子,利用這種形式的函數,我們可以對窗體控件進行很多種形式的控制。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM