2012-03-16 5 views
0

私は1つのボタンで簡単なページを作成した後、クリックイベントで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

答えて

6

あなたは「自分自身への参照」したいと言ってきたので、私はあなたが、クリックイベントを発生させたボタンへの参照をしたいと仮定します。

Dim button = DirectCast(sender, Button) 

しかし、ボタンが(この場合のように)ページの一番上にあるときに、コントロールへの参照がある:それは常にソースコントロールだから

最も簡単には、sender引数を使用することですFindControlを使用して、なぜあなたはとにかく直接参照を持っているのであれば

EntryDoor1.Visible = False 

?!:自動的に部分的designer.vbファイルで作成されました

編集

ただ、完全を期すため。あなたが記述している振る舞いには、理由が1つしかない場合があります。をContentPageMasterPageに入れようとしています。 This is a special caseの場合は、最初にContentPlaceholderへの参照を取得する必要があります。

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

をしかし、あなたが直接、ページ内の参照を持っているので、再び、これは無意味です:次に、あなたのButtonためFindControlを使用することができます。

関連する問題