- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RadioButton和CheckBox控件.doc
RadioButton和CheckBox控件
对GUI系统的用户来说,单选按钮和复选框是非常熟悉的对象。单选按钮以组的形式出现并且只允许互斥性选择。复选框则允许用户在类似对/错、是/否(还有第三种“可能”状态)之间转换程序的状态。这些对象对用户来说都是非常熟悉的,你完全可以相信:构建一个使用单选按钮和复选框的.NET精简框架程序,不需要任何有关如何使用这些控件的说明。对这些控件进行编程通常都很简单,使问题复杂化的因素往往更多地来自于用户界面设计和域间依赖,而不是控件本身的内在复杂性。
A Sample Program: RegisterMembers
一个例程:成员注册程序我们的这个例程具有一个数据收集窗体,这个窗体与某些俱乐部或社团用来登记注册新成员的相类似。这个程序的事务需求是将所有成员分为三类:成人、儿童和团体。我们所要收集的信息依据成员类型而不相同。例如,所有类型的成员都拥有一个ID号和一个名字。成人和团体成员需要输入地址信息,而儿童成员则不需要(这里假设每个儿童都与一个成人成员住在一起)。儿童成员是唯一要求输入生日的类型。每个儿童与团体成员都必须与一个成人成员相联系,也就是说,他们必须有一个保证人。地址信息包括街道、城市、州/省(“SP”)和邮政编码(“PC”)。图7.10展示了在设计器窗口中显示的所有输入域。
图7.10 注册输入域
沿着这个窗体顶部出现的三个单选按钮用来分辨成员类型。一旦用户选定了某种成员类型,我们的程序就会隐藏与该类型不匹配的输入域,并且将剩下的域移到一处以便消除窗体中的空白区域。用来输入儿童成员信息的布局如图7.11所示。
图7.11 注册一个儿童成员
Using Radio Buttons
使用单选按钮单选按钮很简单。一个单选按钮有两种可能的状态,选中或未选中,这一状态由Checked属性指示。单选按钮接受两种特定于按钮的事件:一种用来指示Checked属性的一次改变,另一种用来指示用户对单选按钮进行了点击(不论这一点击是否引起状态改变)。
单选按钮之间互斥。在任何时候,一组RadioButton控件中至多只能有一个RadioButton控件处于选中状态。用户对某一单选按钮的选中会导致.NET精简框架将别的按钮取消选中。应用程序本身可以通过设置所有Checked属性为False,从而将一组按钮全部置为未选中状态,但对用户而言这是不可能的。
单选按钮作为一个群体共同工作。将它们集中放置在一个容器控件中,如窗体或者是别的类型的容器控件(例如面板),你就可以定义这样一个群组。如果你在进行.NET精简框架编程之前进行过ASP.NET编程,你可能会注意到,这种分组办法与基于网络的单选项按钮分类方法并不相同,在那种情况下,它们是否属于同一群组由它们的一个GroupName属性决定。而在.NET精简框架中,这一点仅由位置决定,而不是别的任何属性。
单选按钮通常按照下面两种方式中的一种使用。第一种类似于我们在本章前面看到的正常按钮。用户点击按钮,希望发生些什么。这也就是我们的成员类型按钮。用户点击其中的一个按钮,希望看到输入域自己重新排列。这种情况下,应用程序响应Click事件并且还需要一个Click事件处理程序。
第二种用法——类似于文本框——与数据输入有关。作为第二种用法的一个例子,我们的程序使用了一组单选按钮来指示成员是男性还是女性。这种用法的典型是,Click事件被忽略,而Checked属性的值与其他输入值一同被收集,以作为以后某个事件的响应,在我们的程序中,这个事件就是Add按钮的Click事件。
Building RegisterMembers
构建成员注册程序在了解了这些背景信息之后,让我们开始创建我们的程序。我们首先书写用来布置数据输入域的代码,这里的数据输入域包括一个盛放着三个RadioButton控件的Panel控件和一个Add按钮。因为当成员类型为儿童时,所有与地址相关的字段均需隐藏,所以我们将它们放置在一个Panel控件中,以便我们能够仅用一行代码就显示或隐藏它们,这行代码允许我们很容易的获得如图 7.11所示的数据输入窗体。
只是出于个人喜好的原因,在这里我们又一次使用了代码而不是设计来布置窗体中的控件。正如我们在本书前面提到的那样,设计时布局通常较为简单,而运行时布局比较复杂,但不论是设计器书写的代码还是你自己书写的,在性能方面都完全相同。我们书写了一个例程,用来验证在它们容器面板中的RadioButton控件,然后将面板放置在屏幕的右上角。我们在窗体的Load事件时调用这一例程,如代码清单 7.14所示;结果的屏幕布局可以在先前展示的图 7.11中看到。
代码清单7.14 一个用来设置面板中Radio Button位置的方法
Private Sub PositionOption
文档评论(0)