2013年5月13日 星期一

關於Control與Controls的不同

每次遇到關於搜尋控制項的問題 百思不得奇解的
理解Controls之後 心想不會忘記!
結果經過時間的力量讓我再次遇見Controls
想通之後已經是2.3天過後了
還是為了這寫一篇吧XD

關於Control 與 Controls差別 先重 命名空間看起吧
他的命名空間 叫做System.Windows.Forms
基本上這個命名空間 專門在定義 控制項目 與功能表等等..
介紹先要用的就好


而底下的類別中 待會要介紹的有

Control類別 與 Control.ControlCollection類別

在這裡先來解釋Control類別
msnd中說!
定義控制項的基底類別,它們屬於具視覺表示的元件?

話說不知道是 翻譯不好還是我國文程度差
在大概觀看一下 屬性功能後 才大概明白何謂基底類別?
指 背景顏色 或 高度和寬度 等等的 介紹起來要一本書這麼多XD
關鍵來了
在Control類別中有一個叫Controls的屬性
msdn解釋說  : 取得控制項中包含的控制項集合。
在備註中 說到了重點 如下
Control 可以當做是控制項集合的父代。例如,將數個控制項加入 Form 時,每一個控制項都是指派給表單之 Controls 屬性的 Control.ControlCollection 成員 (衍生自 Control 類別)。

也就是說 Controls是    衍生自Control中的ControlCollection類別!!

ControlCollection 也就是 Controls

您可以使用 Control.ControlCollection 類別中的可用方法,管理指派給 Controls 屬性之 Control.ControlCollection 中的控制項。


再來證明 Controls等於Control.ControlCollection
我們用Controls來使用Control.ControlCollection 中的方法!

假如我要搜尋system.Windows.Forms中控制項的索引key值
利用textBox讓使用者 輸入要 搜尋屬性的text名稱 按下button之後
show出訊息!!
來看下列範例
如果視窗中 放了許多 Button1~~N 我們要搜尋其中之一 然後 刪除!
假如我要找BUTTON1 好了

 private void button12_Click(object sender, EventArgs e)
        {
            //輸入控制項的Text屬性名稱 假如E="Button1"
            string E = textBox1.Text;
            //利用ContainsKey(E)搜尋Controls裡面有沒有Text=Button1
            if (Controls.ContainsKey(E))//找到if會等於 TRUE
            {
                MessageBox.Show("準備刪除"+Controls[E]);
                Controls.Remove(Controls[E]);//刪除!
            }
            else//不然就FALSE
                MessageBox.Show("NO"+Controls[E]);
        }



 關於Controls中的動作 可參考Control.ControlCollection類別
比如 刪除Remove 或 show出name 之類的

沒有留言:

張貼留言