如何:在 Web 窗体应用程序中使用事件
更新:2007 年 11 月
Web 窗体应用程序中的一种常见情况是使用控件填充网页,然后根据用户单击的控件执行特定操作。例如,当用户在网页中单击 System.Web.UI.WebControls.Button 控件时,该控件会引发一个事件。通过处理该事件,应用程序可以针对该按钮单击操作执行适当的应用程序逻辑。
有关“Web 窗体”编程模型的信息,请参见 Web 窗体编程。
处理网页上的按钮单击事件
创建一个具有 Button 控件的 Web 窗体页(ASP.NET 页)。
<asp:Button id = "Button" Text = "Click Me" runat = server/>
定义一个与 Click 事件委托签名匹配的事件处理程序。Click 事件为该委托类型使用 EventHandler 类,而为该事件数据使用 EventArgs 类。
void Button_Click(object sender, EventArgs e) {...}
Sub Button_Click(sender As Object, e As EventArgs) ... End Sub
将 Button 元素中的 OnClick 属性设置为事件处理程序方法。
<asp:Button id = "Button" OnClick = "Button_Click" Text = "Click Me" runat = server/>
说明: Web 窗体应用程序开发人员可以按照所示以声明方式处理事件,而不必直接使用委托。ASP.NET 页框架生成创建 EventHandler 实例的代码,EventHandler 引用 Button_Click 并将此委托实例添加到 Button 实例的 Click 事件。
示例
以下 Web 窗体页处理 Button 的 Click 事件以改变 TextBox 的背景色。示例中以粗体表示的元素显示了事件处理程序代码以及事件处理程序如何连结到 Button 的 Click 事件。
安全说明: |
---|
此示例具有一个文本框,用于接受用户输入,这是一个潜在的安全威胁。默认情况下,ASP.NET 网页验证用户输入是否不包括脚本或 HTML 元素。有关更多信息,请参见脚本侵入概述。 |
[C#]
<html>
<script language="C#" runat=server>
private void Button_Click(object sender, EventArgs e){ Box.BackColor = System.Drawing.Color.LightGreen; }
</script>
<body>
<form method="POST" action="Events.aspx" runat=server>
Click the button, and notice the color of the text box.<br><br>
<asp:TextBox
id = "Box" Text = "Hello" BackColor = "Cyan" runat=server/>
<br><br>
<asp:Button
id = "Button" OnClick = "Button_Click" Text = "Click Me"
runat = server/>
</form>
</body>
</html>
<html>
<script language="VB" runat=server>
Private Sub Button_Click(sender As Object, e As EventArgs) Box.BackColor = System.Drawing.Color.LightGreen
End Sub
</script>
<body>
<form method="POST" action="Events.aspx" runat=server>
Click the button, and notice the color of the text box.<br><br>
<asp:TextBox
id = "Box" Text = "Hello" BackColor = "Cyan" runat=server/>
<br><br>
<asp:Button
id = "Button" OnClick = "Button_Click" Text = "Click Me"
runat = server/>
</form>
</body>
</html>
编译代码
要查看 Web 窗体中事件处理如何工作,请将示例页保存为一个带有 .aspx 扩展名(这表示该文件是一个 ASP.NET 页)的文件,并将其部署在您的 IIS 虚拟根目录中任意一处。