3.5.4 Button控件
可以使用Web控件在表单中添加三种按钮(功能类似,但外观不同):
Button:表示一个标准的命令按钮,呈现为一个 HTML 提交按钮。
LinkButton:呈现为页面中的一个超链接。但是,它包含使窗体被发回服务器的客户端脚本。
ImageButton:允许您将一个图形指定为按钮。该控件还查明用户在图形中单击的位置,这使您能够将按钮用作图像映射。
当用户单击时,所有三种类型的按钮都会使窗体被提交给服务器。这些按钮还可引发它们自己的 Click 事件,您可以为这些事件编写事件处理程序。
·Button控件
属性
Text:获取或设置在按钮中显示的文本标题。
CommandArgument:获取或设置可选参数,当单击按钮时,将这个值传递Command事件。
CommandName:获取或设置命令名,当单击按钮时,将这个值传递Command事件。
CausesValidation:获取或设置一个值,该值指示在单击按钮时是否验证表单。
事件
Click:在单击按钮时发生。
Command:在单击按钮时发生,CommandArgument、CommandName参数的值被传递给本事件。
注意:先引发Click事件,再引发Command事件。 ·LinkButton控件
LinkButton 控件的外观与 HyperLink 控件相同,但功能与 Button 控件相同。如果单击控件时要链接到另一个 Web 页,可以考虑使用 HyperLink 控件。
LinkButton 控件将 javascript 呈现给客户端浏览器。客户端浏览器必须启用 javascript 才能使该控件正常工作。·ImageButton控件
ImageButton 控件具有如下特殊属性,CommandArgument、CommandName、CausesValidation 属性及事件与Button控件相同,请参照前面内容。
AlternateText:获取或设置当图像不可用时,Image控件中显示的替换文本。
ImageAlign:获取或设置Image控件相对于Web页上其他元素的对齐方式。
ImageUrl:获取或设置在 Image 控件中显示的图像的位置。
·示例:创建一个简单的加减法计算器
①创建界面元素:新建一个窗体Button.aspx,在窗体上添加:
两个TextBox控件:txtOpt1和txtOpt2
三个Button控件:btnAdd、btnSub和btnReset
一个Label控件:lblResult
调整它们的大小和位置图。
图片如下:

②为三个按钮添加如下属性
CommandName CommandArgument
btnAdd Add 加法
btnSub Sub 减法
btnReset Reset 复位
③添加应用逻辑:选中btnAdd加号按钮,单击属性窗口中的闪电按钮(如图),切换到事件窗口。在Command事件的后面输入start_operate,然后双击它,打开Button.aspx.cs,我们可以看到系统已经自动为我们添加了如下代码:
图片如下:

粉红色部分为系统自动添加的代码
图片如下:

用同样的方法为btnSub、btnReset按钮添加Command事件start_operate。
④打开Button.aspx.cs,在 start_operate 函数中输入如下应用逻辑:
private void start_operate(object sender, System.Web.UI.WebControls.CommandEventArgs e)
{
lblResult.Text="您执行了"+e.CommandArgument+"操作。";
if(e.CommandName=="Add"){
lblResult.Text+="操作结果是:"+Convert.ToString((Convert.ToInt32(txtOpt1.Text)+Convert.ToInt32(txtOpt2.Text)));
}
if(e.CommandName=="Sub")
{
lblResult.Text+="操作结果是:"+Convert.ToString((Convert.ToInt32(txtOpt1.Text)-Convert.ToInt32(txtOpt2.Text)));
}
if(e.CommandName=="Reset")
{
txtOpt1.Text="";
txtOpt2.Text="";
lblResult.Text+="文本框中的数据已经被清除";
}
}
⑤保存文件,按下F5运行,如下图所示。
图片如下:

说明:这个程序还有很多毛病,最主要的是没有在提交前进行表单验证,一旦输入的数据无效,就会报错。但本例的目的的练习按钮控件的使用,以及如何为按钮添加事件处理。另外,还要牢记,C#是强类型化的语言,在计算和赋值前注意进行类型转换。