2013-05-09 75 views
1

假設我想在TextBox上使用TextChanged事件。爲什麼事件在aspx文件中顯示爲「OnTextChanged」?爲什麼ASP.Net事件以「On」開頭

<asp:TextBox ID="Textbox1" runat="server" 
    OnTextChanged="Textbox1_TextChanged"></asp:TextBox> 

來自WPF和WinForms背景,這對我來說似乎很奇怪。我習慣以同樣的方式看到提到的事件名稱。在後臺將「OnTextChanged」更改爲「TextChanged」。

回答

2

TextChanged是一個事件OnTextChanged是一個處理委託。你不能分配給一個事件。代替它,你在vb代碼中使用AddHandler,但是你可以在聲明性語法中爲OnTextChanged屬性賦值。我認爲這種差異是在方向事件是一個對象,但方法參考被分配一些財產。所以前綴是爲了強調差異。

類有

Public Event TextChanged As EventHandler 

Protected Overridable Sub OnTextChanged (e As EventArgs) 

是方法籌集上升的事件。有類似的邏輯。

+0

這很有趣。因此,根據http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.textbox.ontextchanged.aspx上的示例,您可以使用OnTextChanged來引發TextChanged事件。你爲什麼還要在aspx文件中使用以向TextChanged添加處理程序。奇怪的。 – Nate 2013-05-09 19:34:32

2

我很確定這只是一個約定。看起來事件並不以On開頭,但可覆蓋的功能確實如此。

Public Event TextChanged(sender As Object, e As System.EventArgs) 

VS

Protected Overridable Sub OnTextChanged(e As System.EventArgs) 
+0

我看到它是一個約定(這是很好的知道),我只是想了解導致OnTextChanged方法(http://msdn.microsoft.com/en-us/library/system.web。 ui.webcontrols.textbox.ontextchanged.aspx)向TextChanged事件添加處理程序(TextBox1_TextChanged)。 OnTextChanged文檔使得它聽起來像用於引發事件的方法(通過和示例覆蓋默認行爲)。 – Nate 2013-05-09 19:46:24

+1

@Nate也許這可以幫助:http://stackoverflow.com/a/1006968/130611 – 2013-05-09 19:52:37

相關問題