通過控件名返回控件對象、反射
在WINFORM程序中,我們經(jīng)常會遇到一種情況,即知道某一控件的名稱,需要直接將該名稱轉(zhuǎn)換成控件對象。這樣我們就可以使用該控件的某個屬性或者方法。比如,假設(shè)現(xiàn)在有一個按鈕控件,其名稱為"button1
在WINFORM程序中,我們經(jīng)常會遇到一種情況,即知道某一控件的名稱,需要直接將該名稱轉(zhuǎn)換成控件對象。這樣我們就可以使用該控件的某個屬性或者方法。比如,假設(shè)現(xiàn)在有一個按鈕控件,其名稱為"button1",我們想要將其Enabled屬性設(shè)置為False。下面介紹兩種方法來實現(xiàn)這一目標(biāo)。
方法一:通過查找控件名稱的方法返回等值控件對象
```csharp
("button1", True)(0).Enabled False
```
以上方法是在窗體中查找所有名稱為"button1"的對象,并返回數(shù)組。我們可以通過取數(shù)組中的第一個對象來獲取該控件。
方法二:通過反射的方法獲取對象
首先,我們需要準(zhǔn)備一個函數(shù),該函數(shù)根據(jù)對象名稱返回該對象。
```csharp
Function GetObj(ByVal Pobj As Object, ByVal ObjName As String) As Object
Return ().GetField("_" ObjName, Or Or ).GetValue(Pobj)
End Function
```
然后,我們可以直接調(diào)用上述函數(shù)來獲取控件對象并設(shè)置其Enabled屬性為False。
```csharp
GetObj(Me, "button1").Enabled False
```
其中,Pobj參數(shù)表示當(dāng)前對象的容器,一般使用Me表示當(dāng)前窗體對象。
通過上述兩種方法,我們可以方便地根據(jù)控件名稱獲取對應(yīng)的控件對象,并進(jìn)行進(jìn)一步的操作。這在編寫WINFORM程序時非常有用,能夠提高開發(fā)效率。