版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6.1.1Web窗体简介 如果您以前使用VB编写过Windows窗体程序,那么您对Web窗体就不会感到陌生。其实Web窗体与Windows窗体类似,都用于创建用户界面,只不过一个用于Web,在浏览器中展示其界面,一个用于Windows。 在ASP.NET中,对Web窗体编程分成了两个不同的部分――可视元素和编程逻辑。可视元素就是Web窗体页,它是静态文本、HTML和ASP.NET服务器控件的容器。它存储在以“.aspx”为扩展名的文件中。我们可以使用VisualStudio.NETWeb窗体设计器和ASP.NET服务器控件来设计Web窗体页。 编程逻辑就是一些与Web窗体进行交互的代码,其中包括Web窗体和它所包含控件的事件处理程序,它可以与可视元素位于同一个文件中,也可以与可视元素位于不同的文件中。如果位于同一个文件中,该文件的扩展名仍然为“.aspx”;如果位于不同的文件中,则该文件称作“代码隐藏”文件,“代码隐藏文件”的扩展名与您使用的编程语言有关。如果您使用VisualBasic.NET编写代码,则“代码隐藏文件”的扩展名为“.aspx.vb”。如果您使用VisualC#.NET编写代码,则“代码隐藏文件”的扩展名为“.aspx.cs”。6.1Web窗体6.1.2Web窗体处理模型 如果可视元素和编程逻辑分别位于两个独立的文件中,那么他们是如何共同工作的?其原理非常简单,即当应用程序运行时,它们会组合在一起。项目中的所有代码隐藏类文件都被编译成一个动态链接库(DLL)文件,并且Web页会动态产生一个派生自Page类(Page类存在于System.Web.UI名称空间中)的新类。而Web窗体的.aspx
页文件,只有当用户第一次浏览该页时,才由ASP.NET产生一个代表该页的.NET类文件,然后再编译成另一个动态链接库(DLL)文件。在生成.NET类文件时二者发生关联,即该.NET类是从第一个DLL文件中的代码后置类继承而来。这样当用户请求网页时,服务器上的DLL文件就会产生网页的HTML输出,就像一个本地运行的程序一样与用户进行交互。如果可视元素和编程逻辑位于同一个文件中,其原理更加简单。当用户第一次请求网页时,由ASP.NET产生一个代表该页的.NET类文件,该类直接继承于Page类。然后再编译成一个动态链接库(DLL)文件,由DLL产生网页的HTML输出。 总之,在该模型中,只要Web窗体页受到请求,此DLL文件就会在服务器上运行。在运行时,此DLL文件通过动态创建输出并将其发送回浏览器或客户端设备来处理传入请求和响应。如果该页包含Web服务器控件,则派生的页类用作控件的容器。控件的实例在运行时创建,并且同样地为浏览器呈现输出。实际上,整个Web窗体页是一个可执行程序,该程序生成将被发送回浏览器或客户端设备的输出。 另外,您可以在.aspx文件中通过Page指令的Codebehind、Inherits和Src
属性指定.aspx
文件与其代码隐藏文件的关系。如:
<%@PageLanguage="vb"AutoEventWireup="false"Codebehind="WebForm1.aspx.vb"Inherits="TestCommand.WebForm1"%>
其中,Codebehind仅由VisualStudio.NET的Web窗体设计器使用,它引用包含页类的文件的名称。如上例中的WebForm1.aspx.vb文件。如果不是使用VisualStudio.NET生成.aspx文件,则使用src属性指名包含页类的文件名称。Inherits属性标识Web窗体页需要从哪个类派生,如上例中的TestCommand.WebForm1类。注意: 如果将包含Src
属性Web窗体页导入到VisualStudio.NET中,则设计器将引发错误6.1.3Web窗体页面状态 在客户端和服务器端之间进行通信时,使用HTTP协议。由于HTTP协议是一个无状态协议,因此每当在往返过程中处理一页时,该页即被损坏和重新呈现,并且有关Web窗体页以及该页上控件的状态有关的所有信息均将丢失。这对我们编写Web应用程序造成极大困难。为了解决这个问题,ASP.NET提供了视图状态这一机制。它利用Page类的ViewState保存页面和页面中各个控件的状态,如哪个单选按钮被选中了、文本框中包含什么文字等。 使用视图状态的好处是:不占用服务器资源。视图状态在页面隐藏域中保存。实现机理非常简单。自动保持页和控件的状态。增强的安全功能。视图状态中的值是散列的、压缩的并且是为Unicode实现而编码的,这意味着比隐藏域具有更高的安全性状态。注意: 为了使用视图状态,Web窗体必须具有服务器表单元素,即“<formrunat="server">”。动手做:[例6-1](6-1.aspx)视图状态<html><TITLE>[例6-1]视图状态</TITLE><body><formrunat="server">
请输入您的姓名:<BR><asp:textboxid="lTitle"runat=server/><asp:buttonid="Submit"Text="确认"runat=server/></form></body></html>点评:
该段代码包含一个文本框和一个按钮。为了查看视图状态的实现,可以查看服务器发给浏览器的HTML代码。选择IE浏览器的【查看】|【源文件】菜单项,得到如下所示HTML代码:<html><TITLE>[例6-1]视图状态</TITLE><body><formname="_ctl0"method="post"action="6-1.aspx"id="_ctl0"><inputtype="hidden"name="__VIEWSTATE"value="dDwxNDg5OTk5MzM7Oz4qPkqoW5XWb44RIPPi/mtTOryJvw=="/>
请输入您的姓名:<BR><inputname="lTitle"type="text"id="lTitle"/><inputtype="submit"name="Submit"value="确认"id="Submit"/></form></body></html>从HTML代码中可以看到一个名字叫“__VIEWSTATE”的隐藏域,它就是视图状态。它的值是“dDwxNDg5OTk5MzM7Oz4qPkqoW5XWb44RIPPi/mtTOryJvw==”。由于采用了加密措施,所以我们无法知道其中的含义。但服务器通过解密后,可以恢复它的值,可以知道它的含义。
6.2ASP.NET事件处理ASP.NET把事件驱动由Windows程序引入到Web程序中,使得程序设计模式发生了根本改变。只有当事件发生时,才会有相应的处理,才会触发相应的代码。没有事件发生时,任何代码都不会被执行。ASP.NET事件驱动与Windows事件驱动还有一些差别,Windows程序的事件引发和处理一般都位于同一个位置,而基于客户端的Web应用程序事件本身与处理该事件的位置是分离的。这样APS.NET就要求在客户端引发的事件,由客户端来捕获,然后通过HTTP将事件消息传输到服务器,在服务器上调用相应的事件处理程序来响应此事件。ASP.NET事件一般分为两类:在页面处理过程的某一阶段自动引发的页面事件;在客户端被触发的服务器控件事件。下面就分别讲述。6.2.1页面事件
页面事件在页面每次加载时都会发生,是由ASP.NET页框架引发的,不需用户提供事件绑定。ASP.NET页框架是分阶段对Web窗体页进行处理的。在Web窗体页处理的每一阶段,都可能引发事件,以及运行与该事件相对应的事件处理程序。因此通过向这些事件处理程序添加代码可以更好地控制Web窗体页。下面就介绍一下页面事件,以及与之相应的Web窗体页处理阶段。1.Page_Init事件该事件发生在ASP.NET页框架初始化阶段,即在该页第一次被载入时发生的。通常使用该事件为Web窗体页中的各个控件进行初始化工作。其语法形式为:SubPage_Init(senderAsObject,eAsEventArgs)
事件处理代码EndSub其中,sender事件参数为事件发出者,e事件参数为事件所包含的数据。所有的Web页事件处理程序都有这两个参数,第一个参数的类型为Object,第二个参数为EventArgs类型或其派生类。2.Page_Load
事件该事件在Web页被载入浏览器时发生。通常也使用该事件为Web窗体页中的各个控件进行初始化工作。但它与Page_Init事件不同,Page_Init事件是在页面第一次载入时发生的,当页面重入时就不会发生了。而Page_Load事件在页面每次载入时都会发生。另外,他们的执行顺序也不同,Page_Init事件先执行,Page_Load事件后执行。其语法形式为:SubPage_Load(senderAsObject,eAsEventArgs)
事件处理代码EndSub有时,需要在Page_Load事件中区分页面是第一次被载入,还是重入。ASP.NET为Page类提供了一个IsPostBack属性,当该属性为False时,表示页面是第一次被载入,否则是重入。如:SubPage_Load(senderAsObject,eAsEventArgs) IfnotPage.IsPostBackThen ‘第一次被载入
Else ‘重入
EndIfEndSubPage_Unload
事件该事件在Web页被清除时发生。通常在该事件中做一些善后工作,如关闭打开的文件、断开与数据库的连接、清理对象等。其语法形式为:SubPage_Unload(senderAsObject,eAsEventArgs)
事件处理代码EndSub
动手做:[例6-2](6-2.aspx)页面事件<HTML><TITLE>[例6-2]页面事件</TITLE><SCRIPTLanguage="VB"RUNAT="SERVER">SubPage_Load(senderAsObject,eAsEventArgs) web.Text="网络" news.Text="报纸" tv.Text="电视" web.checked=true lTitle.Text="请选择您获取信息的途径:"EndSubSubSubmit_Onclick(senderAsObject,eAsEventArgs) EndSub </Script><BODY><FORMRUNAT="SERVER"><asp:labelid="lTitle"runat=server/><BR><asp:radiobuttonid="web"groupname="path"runat=server/><BR><asp:radiobuttonid="news"groupname="path"runat=server/><BR><asp:radiobuttonid="tv"groupname="path"runat=server/><BR><asp:buttonid="Submit"Text="确认"onclick="Submit_Onclick"runat=server/><p><asp:labelid="lDisplay"forecolor="Blue"font-size="20pt"runat=server/></FORM></BODY></HTML>点评:该段代码为Web页面添加了Page_Load事件。在该事件中,为页面的静态文本标签lTitle设置了初始值“请选择您获取信息的途径:”;为单选按钮web、news和tv添加文本值“网络”、“报纸”和“电视”,并选中web单选按钮。运行结果如图6-1所示。
服务器控件事件是在客户端被客户所引发的,在服务器端被处理。它包括回发事件和非回发事件。回发事件是指事件发生后,客户端会立即把事件提交到服务器。非回发事件是指事件被引发后不会立即被发送到服务器端,而是由控件在客户端缓存这些事件,直到下一次页面提交时才发送,这时会引发和处理所有挂起的事件。要想使控件的事件能够被立即响应,应该使控件具有回发事件能力,即设置控件的AutoPostBack
属性为True。例如,默认情况下,CheckBox复选框控件的CheckedChange事件不会导致该页被提交。但是,通过将该控件的AutoPostBack属性设置为true,则当用户单击复选框时,CheckedChange事件会立即发送到服务器并被处理。由于服务器控件事件引发和处理位置不同,需要在服务器和客户端之间传递,会占用大量带宽,而且影响效率。因此常见服务器控件的事件都经过优化,一些不必要的事件都被去除掉,减少了服务器控件的事件数量。而且不同的控件可能具有不同的事件,因此服务器控件的事件会在6.3节讲解具体控件时,再详细讲解。为服务器控件添加事件最简单的方法就是在服务器控件的标记内把事件绑定到事件处理程序上,然后在该Web页上添加一个事件处理程序。或者如第一章1.3.2节所示的那样,在VisualStudio.NET中为服务器控件添加事件。6.2.2服务器控件事件动手做:[例6-3](6-3.aspx)服务器控件事件<HTML><TITLE>[例6-3]服务器控件事件</TITLE><SCRIPTLanguage="VB"RUNAT="SERVER">SubPage_Load(senderAsObject,eAsEventArgs) IfnotPage.IsPostBackThen web.checked=true EndIfEndSubSubSubmit_Onclick(senderAsObject,eAsEventArgs) DimmessageAsString="您获取信息的途径是:" ifweb.checkedthenmessage=message&"网络" ifnews.checkedthenmessage=message&"报纸" iftv.checkedthenmessage=message&"电视" lDisplay.Text=messageEndSub </Script><BODY><FORMRUNAT="SERVER">
请选择您获取信息的途径:<BR><Inputtype="radio"id="web"name="path"runat=server>网络<BR><Inputtype="radio"id="news"name="path"runat=server>报纸<BR><Inputtype="radio"id="tv"name="path"runat=server>电视<BR><Inputtype="button"id="Submit"Value="确认"onserverclick="Submit_Onclick" runat=server/><p><asp:labelid="lDisplay"forecolor="Blue"font-size="20pt"runat=server/></FORM></BODY></HTML>点评:该段代码为Web页面添加了一个服务器按钮控件的单击事件onserverclick。当用户单击“确定”按钮后,就会引发该事件。在该事件中,根据选中的单选按钮确定“获取信息的途径”。另外,在页面第一次载入时,通过Page_Load事件设定单选按钮的默认选中状态。运行结果如图6-2所示。
ASP.NET之所以能够快速建立强大的Web应用程序,就在于它提供许多内置服务器控件。通过利用这些控件的属性、方法和事件编程,就可以完成以前需要许多行HTML代码才能完成的工作。而且ASP.NET还允许我们使用第三方控件和自定义控件,以增强ASP.NET应用程序的功能和灵活性。ASP.NET内置服务器控件包括HTML服务器控件、Web服务器控件和验证控件。本节就详细介绍ASP.NETHTML服务器控件。
6.3HTML服务器控件6.3.1HTML服务器控件基本知识HTML控件是与HTML标记相对应的服务器端控件,它是在HTML标记基础上加上RUNAT="SERVER"属性后形成的,因此二者的属性基本相同。那么我们为什么还要使用HTML控件呢?因为我们不能利用程序直接控制标准HTML标记的属性、方法和事件。以前要想控制这些HTML标记,必须另外学习其它如JavaScript等程序语言才行。现在ASP.NET通过将HTML标记转换为HTML服务器控件,就可以使我们在服务器端通过编程来控制这些HTML服务器控件,从而可以在运行时控制页面的外观和功能。通过将HTML标记对象化,可以使我们使用VB.NET和C#语言来编写ASP.NET动态网页程序。而且与早期的ASP相比,可以减少许多代码,使程序编写和维护变得更加容易。
HTML控件与HTML标记不同之处,在于HTML控件多了ID以及Runat属性。ID属性用于标识该控件,以便在服务器端使用该控件。如果不需要在服务器端控制该控件,可以不设定ID属性。而Runat
属性表示这个对象是在服务器端执行,所有的HTML控件都必须加上这个属性。例如,生成一个HTML服务器文本框控件:
<inputtype="text"id="user"value="用户名"runat="Server">注意:必须把HTML服务器控件包含在含有runat="server"的<form>标记中。要求所有HTML元素要正确结束,结束的方式有两种,结束标记和后缀“/”。为了在代码中引用控件还必须设置控件的id属性6.3.2使用HTML服务器控件HTML服务器控件与HTML标记的对应关系HTML服务器控件的共有属性HTML服务器控件使用方法HTML服务器控件实例HTML服务器控件与HTML标记的对应关系见表6-1
3.HTML服务器控件使用方法使用HTML服务器控件有两种方式:一种是利用VisualStudio.Net集成开发环境,可视化地使用HTML服务器控件;一种是直接书写代码,用代码生成和使用控件。在第一章中我们已经介绍了利用VisualStudio.Net集成开发环境,可视化地使用HTML控件,这里就不再赘述了。下面主要介绍用代码生成和使用HTML控件。使用ASP.NETHTML服务器控件与使用标准的HTML标记几乎相同,只需要添加runat属性和id属性。例如:<inputtype="text"id="pwd"value="密码"runat="Server">除了runat和id属性外,控件还包含其它属性,这些属性可以在标记中直接添加,也可以通过编程添加。例如,向文本框添加MaxLength属性:<inputtype="text"id="pwd"value="密码"MaxLength=10runat="Server"/>向文本框添加Mode属性、Rows属性:<asp:TextBoxid="note"Text="留言"Mode="Multiline"Rows="6"runat="Server"/>一般情况下,控件都要引发事件,以便与用户进行交互,实现动态网页功能。这时就需要为控件添加事件。添加事件的方法如6.2节所示。4.HTML服务器控件实例由于HTML控件基本上与HTML标记相同,其使用也基本相同,因此仅举一个实例演示HTML服务器控件的使用。 动手做:[例6-4](6-4.aspx)编写“求租房屋信息”Web页面<html><head><title>[例6-4]编写"求租房屋信息"Web页面</title><scriptlanguage="VB"runat="server">SubSubmitBtn_Click(senderAsObject,eAsEventArgs) DimtempAsStringTable2.Rows(0).Cells(0).InnerText=Name.ValueTable2.Rows(0).Cells(1).InnerText=Age.Value IFMan.CheckedThen temp="男" Else temp="女" EndIFTable2.Rows(1).Cells(0).InnerText=temp IFMarried.CheckedThen temp="合租" Else temp="不合租" EndIFTable2.Rows(1).Cells(1).InnerText=tempTable2.Rows(1).BgColor="Gainsboro"Table2.Rows(2).Cells(0).InnerText=Select1.Items(Select1.SelectedIndex).ValueTable2.Rows(2).Cells(1).InnerText=Select2.Items(Select2.SelectedIndex).ValueTable2.Rows(3).Cells(0).InnerText=TextArea1.ValueTable2.Rows(3).BgColor="Gainsboro"Table2.Visible=trueEndSub</script></head><body><h3>求租房屋信息:</h3><formrunat=server> <imgsrc="include\line2.gif"alt="image1"align=middlerunat="Server"><tableid="Table1"CellPadding=5CellSpacing=0Border="1"BorderColor="white"runat="server"><tr><tdalign=right>姓名:</td><td><inputtype=textid="Name"maxlength=10size=8runat="Server"/></td><tdalign=right>年龄:</td><td><inputtype=textid="Age"maxlength=4size=2runat="Server"/></td></tr> <tr><tdalign=right>性别:</td>
<td><inputtype=radioid="Man"checked=truename=sexrunat="Server"/>男
<inputtype=radioid="Woman"checked=falsename=sexrunat="Server"/>女</td><tdalign=right>是否合租:</td><td><inputtype=checkboxid="Married"checked=falserunat="Server"/></td></tr><tr><tdalign=right>地点:</td><td><selectid="Select1"Multiple="False"runat="server"> <optionvalue="没有要求">没有要求</option> <optionvalue="河东区"Selected="True">河东区</option> <optionvalue="河西区">河西区</option> <optionvalue="河北区">河北区</option> </select></td><tdalign=right>房型:</td><td><selectid="Select2"Multiple="False"runat="server"> <optionvalue="没有要求">没有要求</option> <optionvalue="独单"Selected="True">独单</option> <optionvalue="偏单">偏单</option> <optionvalue="三居室">三居室</option> </select></td></tr>
<tr><tdalign=right>备注:</td><tdcolspan="3"><textareaid="TextArea1"cols=35rows=4runat=server/></td></tr><tr><td></td><td><inputtype=submitvalue="提交"OnServerClick="SubmitBtn_Click"runat=server><inputtype=resetvalue="取消"runat=server></td></tr></table> <HR><tableid="Table2"CellPadding=5CellSpacing=0Border="2"BorderColor="blue"align=leftVisible=falserunat="server"><tr><td></td><td></td></tr><tr><td></td><td></td></tr><tr><td></td><td></td></tr><tr><td></td><td></td></tr></table></form></body></html>点评:
该例子使用表格Select1来布局Web页面,使Web页面更美观、各控件布局更合理。使用两个HtmlInputText控件接收用户输入的姓名和年龄。使用两个HtmlInputRadioButton控件接受用户对性别的选择。使用一个HtmlInputCheckBox控件接受用户是否合租的选择。使用两个HtmlSelect控件接受用户对坐落地点和房型的选择。使用HtmlTextArea控件接受用户录入备注信息。表格Select2在用户单击“提交”按钮之前并不显示,可以通过设置HtmlTable控件的Visible属性为false来实现。当用户单击“提交”按钮后,服务器端响应按钮单击事件,并在事件响应程序SubmitBtn_Click中获取Web页面上各控件的值,然后显示在表格Select2中。运行结果如图63所示Web服务器控件是ASP.NET提供的一类新型控件,它并不一一映射到HTML服务器控件,而是定义为抽象控件,提供功能丰富的对象模型。它能够检测浏览器的功能,并根据不同浏览器创建适当的输出。对于某些控件,还可以使用模板来自定义控件的外观,可以指定控件的事件是立即发送到服务器,还是先缓存然后在提交Web窗体时引发。因此,Web服务器控件类型更丰富,内置功能更多,可编程操控性更好。下面就介绍一些常用Web服务器控件。6.4Web服务器控件6.4.1按钮控件在Web服务器控件中,常用的按钮控件有Button控件和ImageButton控件。1.Button控件Button控件是一种常用的Web服务器控件,又称为按钮控件。它常用于执行一个命令或提交Web页。在工具箱中Button控件的图示为。双击或用鼠标拖动工具箱中的Button按钮,可将按钮加入到Web窗体,重复该操作可加入多个按钮。加入到窗体的按钮可用鼠标拖放到窗体的任意位置并可以改变按钮的大小。(1)Button控件的语法格式<asp:Buttonid="Button控件的标识符"Text="按钮上显示的文本"CommandName="与按钮关联的命令名"CommandArgument="命令的附加信息"CausesValidation="指示是否停用验证(true|false)"OnClick="事件响应函数名"runat="server"/>(2)Button控件的常用属性通常使用Button控件的属性设置按钮的外观特征,Button控件的常用属性如下:ID:控件的标识符。在程序中使用该值标识控件。Text:设置按钮上显示的标题文字。BackColor:设置按钮控件的背景色。BoderStyle:设置按钮控件的边框的样式,有10种选择。如图6-4所示。图6-4按钮控件的边框样式BoderColor:设置按钮控件的边框的颜色ForeColor:设置按钮控件的所包含文字或图形的前景色。Font:设置按钮控件标题文字的字体。Visible属性:设置按钮控件是否可见。(3)Button控件的常用事件按钮的常用事件只有一种:Click事件:当用户用鼠标单击Button控件时,引发该事件。注意:按钮不支持DblClick事件。2.ImageButton控件
ImageButton控件是一种常用的Web服务器控件,它与Button控件几乎一样,只是外观有所不同。在工具箱中ImageButton控件的图示为。双击或用鼠标拖动工具箱中的ImageButton按钮,可将按钮加入到窗体,重复该操作可加入多个按钮。加入到窗体的按钮可用鼠标拖放到窗体的任意位置并可以改变按钮的大小。(1)ImageButton控件的语法格式<asp:ImageButtonid="ImageButton控件的标识符"ImageUrl="图片的路径"CommandName="与按钮关联的命令名"CommandArgument="命令的附加信息"CausesValidation="指示是否停用验证(true|false)"OnClick="事件响应函数名"runat="server"/>(2)ImageButton控件的常用属性ImageButton按钮的大部分属性与Button按钮相同,独自具有的主要属性有:ImageUrl:设置图像的Url。可以通过选择其右边的按钮,在弹出的选择图像对话框中选择图像。ImageAlign:设置图像的对齐方式。有10种选择。如图6-5所示。 图6-5图像的对齐方式(3)ImageButton控件的常用事件Click事件:当用户用鼠标单击ImageButton控件时,引发该事件。动手做:【例6-5】图像按钮的设计步骤如下:在窗体上放置一个按钮ImageButton1。打开ImageButton1的属性窗口,如图6-6所示。选择ImageUrl属性,单击右侧的小图标,弹出一个“选择图像”对话框,选择一个位图(扩展名为.bmp)文件后,单击对话框中的浏览按钮,从文件列表种选择一个图像文件。6.4.2文本控件Label控件Label控件是一种常用的Web服务器控件,又称为标签控件。标签通常用于输出文本信息,但输出的信息不能编辑,所以常用来输出标题、显示处理结果和标识窗体上的对象。标签一般不用于触发事件。(1)Label控件的语法格式<asp:Labelid="Label控件的标识符"Text="控件上显示的文本"runat="server"/>或者<asp:Labelid="Label控件的标识符"runat="server">
控件上显示的文本</asp:Label>通常控件的语法格式都有两种,一种是以“/>”结尾,一种是以“</asp:xxx>”结尾。二者表达形式虽然不同,但含义完全相同,读者可以任选一种。(2)将Label控件加入Web窗体在工具箱中Label控件的图示为。双击或用鼠标拖动工具箱中的Label控件,可将Label控件加入到窗体,重复该操作可加入多个Label控件。加入到窗体的Label控件可用鼠标拖放到窗体的任意位置并可以改变Label控件的大小。(3)Label控件的属性在Label控件属性窗口的属性列表中,主要属性及其含义如下:BorderStyle:设置边框样式。有10种选择。Enabled:是否允许操作,可取值为True或False,False为禁止操作,此时标签呈暗淡色,一般在代码中设置。Font:设置标签的文字。Textbox控件TextBox控件是一种常用的Web服务器控件,又称为文本框控件。文本框可以输入信息并可以显示、编辑、修改文本内容。文本框控件相当于单行文本框、多行文本框和密码框,可以通过设置文本框的TextMode属性来实现。在工具箱中文本框控件的图示为。双击或用鼠标拖动工具箱中的文本框控件,可将文本框控件加入到窗体,重复该操作可加入多个文本框控件。加入到窗体的文本框控件可用鼠标拖放到窗体的任意位置并可以改变文本框控件的大小。(1)TextBox控件的语法格式<asp:TextBoxid="TextBox控件的文本标识符"AutoPostBack="是否回发事件(True|False)"Columns="文本框的显示宽度"MaxLength="文本框可接受的最多字符数"Rows="文本框的行数"Text="文本框内的文本"TextMode="文本框的行为模式(SingleLine|MultiLine|Password)"Wrap="文本是否自动换行(True|False)"OnTextChanged="事件响应函数的名字"runat="server"/>(2)TextBox控件的属性文本框的属性列表中有许多与窗体和其他控件相同的属性。文本框的编程名称(ID)为TextBox1,TextBox2,……等。文本框的其他主要属性及其含义如下:MaxLength:设置文本框允许输入字符的最大长度,该属性值为0时,不限制输入的字符数,但受VB系统规定的2048个字符的限制。Text:文本内容,当程序执行时,用户在文本框输入的内容会自动保存在该属性中。Font属性:设置文本字体。Wrap属性:文本是否换行,为True时允许换行。BackColor:设置控件的背景色。BorderStyle:设置文本框控件的边框类型。ReadOnly:指示能否更改文本框的内容。为True,则可以更改。为False,则不可以更改,这时相当于Label控件。Columns:文本框的显示宽度(以字符为单位)。Rows:多行文本框中显示的行数。默认为0,表示显示单行文本框。TextMode:确定文本框控件是单行文本框,多行文本框,还是密码框。取值SingleLine,则是单行文本框;取值MultiLine,则是多行文本框;取值Password,则是密码框。(3)TextBox控件常用事件TextBox的常用事件有:TextChange:Text
属性值更改时发生。
动手做:【例6-6】成绩统计【界面设计】图6-7是一个乘法运算的Web窗体页。在窗体上放置了三个文本框、两个按钮和六个标签控件文本框用来输入和显示数的信息。将图中文本框的初始信息清空的代码如下:TextBox1.Text=""TextBox3.Text=""TextBox4.Text=""五个标签分别用于标识文本框作用:Label1.Text="成绩统计"Label2.Text="数学"Label3.Text="英语"Label4.Text="计算机"Label5.Text="总分"
第六个标签用于显示计算出来的总分:Label6.Text=""两个按钮标题分别设为“计算成绩”、“重新输入”。设置如下:butoon1.Text="计算成绩"butoon2.Text="重新输入"整个Web窗体代码如下:<%@PageLanguage="vb"AutoEventWireup="false"Codebehind="WebForm1.aspx.vb"Inherits="_6_6.WebForm1"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"><HTML> <HEAD> <title>WebForm1</title> <metaname="GENERATOR"content="MicrosoftVisualStudio.NET7.1"> <metaname="CODE_LANGUAGE"content="VisualBasic.NET7.1"> <metaname="vs_defaultClientScript"content="JavaScript"> <metaname="vs_targetSchema"content="/intellisense/ie5"> </HEAD> <bodyMS_POSITIONING="GridLayout"> <formid="Form1"method="post"runat="server"> <FONTface="宋体"> <asp:Labelid="Label1"style="Z-INDEX:100;LEFT:48px;POSITION:absolute;TOP:24px"runat="server"Width="128px"Height="24px">成绩统计</asp:Label> <asp:Labelid="Label6"style="Z-INDEX:112;LEFT:88px;POSITION:absolute;TOP:184px"runat="server"Width="96px"Height="24px"BorderStyle="Groove"BackColor="White"></asp:Label> <asp:Buttonid="Button2"style="Z-INDEX:111;LEFT:112px;POSITION:absolute;TOP:224px"runat="server"Width="64px"Text="重新输入"></asp:Button> <asp:Labelid="Label5"style="Z-INDEX:108;LEFT:24px;POSITION:absolute;TOP:184px"runat="server"Width="48px"Height="24px">总分</asp:Label> <asp:TextBoxid="TextBox4"style="Z-INDEX:107;LEFT:88px;POSITION:absolute;TOP:140px"runat="server"Width="96px"></asp:TextBox> <asp:TextBoxid="TextBox3"style="Z-INDEX:106;LEFT:88px;POSITION:absolute;TOP:106px"runat="server"Width="96px"></asp:TextBox> <asp:Labelid="Label4"style="Z-INDEX:105;LEFT:24px;POSITION:absolute;TOP:146px"runat="server"Width="48px"Height="24px">计算机</asp:Label> <asp:TextBoxid="TextBox2"style="Z-INDEX:102;LEFT:88px;POSITION:absolute;TOP:72px"runat="server"Width="80px"></asp:TextBox> <asp:Labelid="Label2"style="Z-INDEX:101;LEFT:24px;POSITION:absolute;TOP:72px"runat="server"Width="48px"Height="24px">数学</asp:Label> <asp:TextBoxid="TextBox1"style="Z-INDEX:103;LEFT:88px;POSITION:absolute;TOP:72px"runat="server"Width="96px"></asp:TextBox> <asp:Labelid="Label3"style="Z-INDEX:104;LEFT:24px;POSITION:absolute;TOP:109px"runat="server"Width="48px"Height="24px">英语</asp:Label> <asp:Buttonid="Button1"style="Z-INDEX:110;LEFT:32px;POSITION:absolute;TOP:224px"runat="server"Width="64px"Text="计算成绩"></asp:Button></FONT> </form> </body></HTML>【程序设计】PublicClassWebForm1InheritsSystem.Web.UI.Page#Region"Web窗体设计器生成的代码"'该调用是Web窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()>PrivateSubInitializeComponent()EndSubProtectedWithEventsLabel1AsSystem.Web.UI.WebControls.LabelProtectedWithEventsLabel2AsSystem.Web.UI.WebControls.LabelProtectedWithEventsTextBox1AsSystem.Web.UI.WebControls.TextBoxProtectedWithEventsLabel3AsSystem.Web.UI.WebControls.LabelProtectedWithEventsLabel4AsSystem.Web.UI.WebControls.LabelProtectedWithEventsTextBox3AsSystem.Web.UI.WebControls.TextBoxProtectedWithEventsTextBox4AsSystem.Web.UI.WebControls.TextBoxProtectedWithEventsLabel5AsSystem.Web.UI.WebControls.LabelProtectedWithEventsButton1AsSystem.Web.UI.WebControls.ButtonProtectedWithEventsButton2AsSystem.Web.UI.WebControls.ButtonProtectedWithEventsLabel6AsSystem.Web.UI.WebControls.LabelPrivatedesignerPlaceholderDeclarationAsSystem.ObjectPrivateSubPage_Init(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.InitInitializeComponent()EndSub#EndRegionPrivateSubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadEndSubPrivateSubButton1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesButton1.ClickDimss,ee,rrAsDoubless=Val(TextBox1.Text)ee=Val(TextBox3.Text)rr=Val(TextBox4.Text)Label6.Text=Str(ss+ee+rr)EndSubPrivateSubButton2_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesButton2.ClickTextBox1.Text=""TextBox3.Text=""TextBox4.Text=""Label6.Text=""EndSubEndClass点评:使用Val函数将字符串转换为浮点数。使用Str函数将浮点数转换为字符串。单击“计算成绩”按钮,会引发Button控件的Click事件,在Click事件响应程序Button1_Click中会计算“数学”、“英语”和“计算机”的成绩和,并在Label6控件中显示计算结果。运行结果如图6-8所示。6.4.3选择控件选择控件通常用于从几个选择项中选择一个或几个选项。它通常包括RadioButton控件和CheckBox控件。1.RadioButton控件RadioButton控件是一种常用的Web服务器控件,又称为单选按钮控件。单选按钮控件用来让用户在一组相关的选项中选择一项,因此单选钮控件总是成组出现。当这一组中的某个单选钮控件被选中时,该组中的其它单选钮控件将自动处于不选中状态。如果想让单选按钮控件组成一组,必须让所有单选按钮的GroupName属性完全一样。RadioButton控件是一个小圆圈,若单击单选按钮,则圆圈中间出现一个小圆点,表示该项被选中。在工具箱中RadioButton控件的图示为。单选按钮的默认名称为radioButton1,radioButton2,……等。双击或用鼠标拖动工具箱中的radioButton控件,可将单选按钮加入到窗体,重复该操作可加入多个单选按钮。加入到窗体的单选按钮可用鼠标拖放到窗体的任意位置并可以改变单选按钮的大小,并通过设置TextAlign
属性来更改标题的方向。(1)RadioButton控件的语法格式<asp:RadioButtonid="RadioButton控件的标识符"AutoPostBack="是否回发事件(True|False)"Checked="是否被选中(True|False)"GroupName="控件组的名字"Text="控件的标题文字"TextAlign="文本对齐方式(Right|Left)"OnCheckedChanged="事件响应函数的名字"runat="server"/>(2)RadioButton控件的常用属性在建立项目的按钮操作中,常使用RadioButton控件的属性设置按钮的外观特征。RadioButton控件的常用属性如下:Text属性:设置RadioButton控件的标题文字。TextAlign属性:设置文本标题相对于单选钮控件的对齐方式。有2种选择,即Left和right,选择right时文本标题位于单选钮控件的右侧。BackColor属性:设置控件的背景色。ForeColor属性:设置控件中文字的颜色。Font属性:设置控件中文字的字体。Visible属性:设置按钮控件是否可见。Checked属性:确定是否被选中。如果被选中则为true。GroupName属性:设置按钮控件所属的组。这是按钮分组的关键。先向页面添加RadioButton控件,然后将所有RadioButton控件手动分配到一个组中。这种情况下,该组可为任意名称;具有相同组名的所有单选按钮视为一个组的组成部分。(3)RadioButton控件的常用事件CheckedChanged
事件。在默认情况下,CheckedChanged
事件并不立即导致向服务器发送Web窗体页,而是在下一次发送窗体时(比如单击ButtonWeb服务器控件时),在服务器代码中引发该事件。如果要使CheckedChanged
事件导致立即发送,必须将RadioButton
控件的AutoPostBack
属性设置为true。例如,在窗体页上添加一个TextBox控件和一个RadioButton控件,单击RadioButton控件则在文本框显示文字。RadioButton控件的CheckedChanged
事件响应程序为:PrivateSubRadioButton1_CheckedChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesRadioButton1.CheckedChangedTextBox1.Text=RadioButton1.TextEndSub运行结果如图6-9所示。2.RadioButtonList控件RadioButtonList控件是单一控件,可作为单选按钮列表项集合的父控件。每个单选按钮列表项都是一个单独的对象,具有自己的属性。实际上,它的作用与多个RadioButton控件组成一组相同,都是用来让用户在一组相关的选项中选择一项,当这一组中的某个单选钮控件被选中时,该组中的其它单选钮控件将自动处于不选中状态。在工具箱中RadioButtonList控件的图示为。RadioButtonList的默认名称为RadioButtonList1,RadioButtonList2,……等。 双击或用鼠标拖动工具箱中的RadioButtonList控件,可将按钮加入到窗体,重复该操作可加入多个按钮。加入到窗体的按钮可用鼠标拖放到窗体的任意位置并可以改变按钮的大小,并通过设置TextAlign
属性来更改标题的方向。(1)RadioButtonList控件的语法格式
<asp:RadioButtonListid="RadioButtonList控件标识符"AutoPostBack="是否回发事件(True|False)"CellPadding="列表项的填充值"DataSource="<%数据绑定表达式%>"DataTextField="绑定字段"DataValueField="绑定字段"RepeatColumns="列表项的列数"RepeatDirection="列表项的方向(Vertical|Horizontal)"RepeatLayout="列表项的呈现方式(Flow|Table)"TextAlign="文本对齐方式(Right|Left)"OnSelectedIndexChanged="事件响应函数的名字"runat="server"><asp:ListItemText="列表项的文本"Value="列表项的关联值"Selected="是否被选中(True|False)"/></asp:RadioButtonList>
(2)RadioButtonList控件的常用属性
RadioButtonList的许多属性与RadioButton相同,其特有的属性有:Items:设置列表中项的集合。选择该属性右侧的,则弹出一个如图6-10所示的ListItem集合编辑器窗口,在此窗口内选择“添加(A)”按钮,可添加列表项。列表项的Selected属性表示该列表项的初始选中状态;Text属性表示该列表项的选项文本内容;Value属性表示与某个列表项关联的值。RepeatColumns:设置列表项的列数,例如当属性值设为3时,则为三列。RepeatDirection:设置列表项的方向。可水平排列或垂直排列。RepeatLayout:设置组内列表项(单选按钮)的布局。取值为Table,则在表中显示列表项;取值为Flow,不以表结构的形式显示列表项。(3)RadioButtonList控件的常用事件RadioButtonList控件在用户更改列表中选定的单选按钮时会引发SelectedIndexChanged
事件。默认情况下,这一事件并不导致向服务器发送窗体,但可以通过将列表项的RadioButton的AutoPostBack
属性设置为true来指定这一选项。3.Checkbox控件CheckBox控件又称为复选框,它与单选按钮一样,也给用户提供一组选项供用户选择。但它与单选按钮有所不同,每个复选框都是一个单独的选项,用户既可以选择它,也可以不选择它,不存在互斥的问题,可以同时选择多项。若单击复选框,则复选框中间出现一个对号,表示该项被选中。再次单击被选中的复选框,则取消对该复选框的选择。在工具箱中CheckBox
控件的图示为。复选框的默认名称为checkBox1,checkBox2,……等。双击或用鼠标拖动工具箱中的CheckBox控件,可将复选框加入到窗体,重复该操作可加入多个复选框。加入到窗体的复选框可用鼠标拖放到窗体的任意位置并可以改变复选框的大小,并通过设置TextAlign
属性来更改标题的方向。(1)CheckBox控件的语法格式<asp:CheckBoxid="CheckBox控件标识符"AutoPostBack="是否回发事件(True|False)"Text="控件的标题文字"TextAlign="文本对齐方式(Right|Left)"Checked="是否被选中(True|False)"OnCheckedChanged="事件响应函数的名字"runat="server"/>(2)CheckBox控件的常用属性Text属性:设置CheckBox控件的标题文字。TextAlign属性:设置文本标题相对于复选框的对齐方式。有2种选择,即Left和right,选择right时文本标题位于复选框的右侧。BackColor属性:设置控件的背景色。ForeColor属性:设置控件的所包含文字或图形的前景色。Font属性:设置控件中文字的字体。Visible属性:设置复选框控件是否可见。Checked属性:复选框按钮是否被选中。如果复选框被选中,则其Checked属性为true。(3)CheckBox控件的常用事件CheckedChanged事件在用户选择CheckBox控件时引发。在默认情况下,CheckedChanged
事件并不立即导致向服务器发送Web窗体页,而是在下一次发送窗体时在服务器代码中引发该事件。如果要使CheckedChanged
事件导致立即发送,必须将CheckBox控件的AutoPostBack
属性设置为true。动手做:[例6-7]选择学习媒介【界面设计】复选框常用于建立具有多选功能的工程界面。图6-11是一个使用复选框选择学习媒介的界面。在Web窗体页上放置一个文本框控件(TextBox1)、3个RadioButton控件(RadioButton1、RadioButton2和RadioButton3)、3个CheckBox控件(CheckBox1、CheckBox2和CheckBox3)和2个按钮控件(Button1和Button2)。整个Web窗体页的代码如下:<%@PageLanguage="vb"AutoEventWireup="false"Codebehind="WebForm1.aspx.vb"Inherits="WebApplication1.WebForm1"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"><HTML><HEAD> <title>WebForm1</title> <metaname="GENERATOR"content="MicrosoftVisualStudio.NET7.1"> <metaname="CODE_LANGUAGE"content="VisualBasic.NET7.1"> <metaname="vs_defaultClientScript"content="JavaScript"> <metaname="vs_targetSchema"content="/intellisense/ie5"> </HEAD><bodyMS_POSITIONING="GridLayou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度个人房产买卖绿色环保装修合同3篇
- 远足活动课程设计
- 安全用电运行管理制度模版(2篇)
- 2025年影剧院消防安全管理制度(2篇)
- 2024年青岛版六三制新必修5语文下册阶段测试试卷
- 二零二五年度承包土地种植与农业电商平台合作协议2篇
- 2025年投资公司年度工作计划范文(2篇)
- 二零二五年度交通基础设施PPP项目合同2篇
- 2025年外研版三年级起点九年级化学下册阶段测试试卷
- 二零二五年度国际贸易财务担保合同示范(国际贸易保障)
- 2023年初中寒假学习计划
- 供应链案例亚马逊欧洲公司分销战略课件
- 石化行业八大高风险作业安全规范培训课件
- 村老支书追悼词
- DB3302T 1131-2022企业法律顾问服务基本规范
- 2022年自愿性认证活动获证组织现场监督检查表、确认书
- 中南大学年《高等数学上》期末考试试题及答案
- 付款通知确认单
- 小龙虾高密度养殖试验基地建设项目可行性研究报告
- 《桥梁工程计算书》word版
- 中考《红星照耀中国》各篇章练习题及答案(1-12)
评论
0/150
提交评论