2012-03-16 63 views
0

我創建了一個帶有一個按鈕的簡單頁面,然後在click事件中使用FindControl來獲取對自身的引用。但是..... FindControl沒有任何返回。 代碼.NET Active Server Page FindControl始終沒有返回

Protected Sub EntryDoor1_Click(sender As Object, e As System.EventArgs) Handles EntryDoor1.Click 
    Dim control = FindControl("EntryDoor1") 
    control.Visible = False 
End Sub 
+1

如果你用你試圖找到的控件發佈了一些'.aspx',可能會有所幫助。 – CAbbott 2012-03-16 20:54:07

回答

6

因爲你說你要「對自身的引用」,我假設你想,才造成了點擊事件的按鈕的引用。

最簡單的就是使用sender說法,因爲這總是源控制:

Dim button = DirectCast(sender, Button) 

但是當按鈕在頁面的頂部(在這種情況下),在參考控制在部分designer.vb文件自動創建:

EntryDoor1.Visible = False 

那麼,爲什麼使用FindControl如果你有一個直接的參考呢?

編輯

只是爲了完整起見。您所描述的行爲只能有一個原因:您試圖在MasterPageContentPage中使用FindControlThis is a special case,您需要先參考ContentPlaceholder。然後你可以使用FindControlButton

Dim button = DirectCast(Page.Master.FindControl("ContentPlaceHolder1").FindControl("EntryDoor1"), Button) 

但同樣,這是毫無意義的,因爲你直接在頁面引用。