动态网站制作指南
[  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 软件工程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ 软件工程 ]的信息

本月文章推荐
.数据库设计说明书.
.UML工具Visual Paradigm 5.1 发布.
.获取用户需求的十大沟通技巧.
.Sun 正式进入ESB市场 发布了新的.
..NET下基于组件的分布式系统动态.
.软件测试与可靠性评估方法研究.
.3DS模型Bump Map(凹凸贴图)渲染.
.人是最坚固的防火墙.
.VS2005改善团队开发的人力负担与.
.UML组件图详解.
.如何编写高质量“软件需求说明书.
.BEA和Siebel共推SOA.
.入侵检测技术综之不可忽视的社会.
.管理信息系统需求调研分析指南.
.备份Gentoo Linux的脚本,适用其.
.浅谈CLR的内存分配和回收机制.
.游戏引擎剖析(七).
.构建下一代软件架构SOA.
.IBM的MARS加密算法实现(1).
.规划SOA(1)了解SOA.

.NET2.0中一种简单的窗口控件状态控制法

文章类别:软件工程 | 发表日期:2008-3-23 |



  我们经常需要控制窗口控件的状态。比如,在某些情况下,需要禁止一部份控件,或让一部份控件呈只读状态等等。

  假如有如下的窗口:


  当按下Enable时,左侧的所有控件都要禁止(Enabled=false),当按下Disable时,左侧的所有控件都取消禁止(Enabled=true)。
通常的作法是直接用代码来控制:

.NET2.0中一种简单的窗口控件状态控制法 private void EnableOrDisable(bool isEnabled)
.NET2.0中一种简单的窗口控件状态控制法.NET2.0中一种简单的窗口控件状态控制法 .NET2.0中一种简单的窗口控件状态控制法{
.NET2.0中一种简单的窗口控件状态控制法 this.button1.Enabled = isEnabled;
.NET2.0中一种简单的窗口控件状态控制法 this.checkBox1.Enabled = isEnabled;
.NET2.0中一种简单的窗口控件状态控制法 this.comboBox1.Enabled = isEnabled;
.NET2.0中一种简单的窗口控件状态控制法 this.textBox1.Enabled = isEnabled;
.NET2.0中一种简单的窗口控件状态控制法 }
.NET2.0中一种简单的窗口控件状态控制法
.NET2.0中一种简单的窗口控件状态控制法 private void BTnEnable_Click(object sender, EventArgs e)
.NET2.0中一种简单的窗口控件状态控制法.NET2.0中一种简单的窗口控件状态控制法 .NET2.0中一种简单的窗口控件状态控制法{
.NET2.0中一种简单的窗口控件状态控制法 EnableOrDisable(true);
.NET2.0中一种简单的窗口控件状态控制法 }
.NET2.0中一种简单的窗口控件状态控制法
.NET2.0中一种简单的窗口控件状态控制法 private void btnDisable_Click(object sender, EventArgs e)
.NET2.0中一种简单的窗口控件状态控制法.NET2.0中一种简单的窗口控件状态控制法 .NET2.0中一种简单的窗口控件状态控制法{
.NET2.0中一种简单的窗口控件状态控制法 EnableOrDisable(false);
.NET2.0中一种简单的窗口控件状态控制法 }

  这样的作法,在一些简单的逻辑控制倒也行的通。但是一旦控件的数量比较多,而控制逻辑也比较复杂的时候,类似EnableOrDisable的函数将会变得很多,而且很复杂、不直观。

  本文介绍一种方法,可以在RAD可视化设计界面中直接指定控件的状态,并只用很简单的代码来切换状态。

  首先,定义一个类UiState,类中只有一个属性“IsEnabled”,用于指定当前控件的禁止状态:


.NET2.0中一种简单的窗口控件状态控制法 class UiState
.NET2.0中一种简单的窗口控件状态控制法.NET2.0中一种简单的窗口控件状态控制法 .NET2.0中一种简单的窗口控件状态控制法{
.NET2.0中一种简单的窗口控件状态控制法 private bool isEnabled;
.NET2.0中一种简单的窗口控件状态控制法
.NET2.0中一种简单的窗口控件状态控制法 public bool IsEnabled
.NET2.0中一种简单的窗口控件状态控制法.NET2.0中一种简单的窗口控件状态控制法 .NET2.0中一种简单的窗口控件状态控制法{
.NET2.0中一种简单的窗口控件状态控制法.NET2.0中一种简单的窗口控件状态控制法 get .NET2.0中一种简单的窗口控件状态控制法{ return isEnabled; }
.NET2.0中一种简单的窗口控件状态控制法.NET2.0中一种简单的窗口控件状态控制法 set .NET2.0中一种简单的窗口控件状态控制法{ isEnabled = value; }
.NET2.0中一种简单的窗口控件状态控制法 }
.NET2.0中一种简单的窗口控件状态控制法 }
.NET2.0中一种简单的窗口控件状态控制法
.NET2.0中一种简单的窗口控件状态控制法   然后编译。必须编译一次,否则RAD界面不知道有这个类存在。

  接下来,到DataSources侧栏中点“增加新数据源”,并在向导中选择“Object”,按下一步:



  选择“UiState”,按“Finish”:


  再回到窗口的设计界面,依次设置需要改变状态的控件。

  如下图,选中某个控件,到属性页中,展开(DataBindings),启动(Advanced)设置窗口,选择“Enabled”属性,并在Binding中选择“uiStateBindingSource - IsEnabled”。



  如下图,可以在设计窗口检查绑定状态:


  最后增加Enable和Disable按钮的处理函数:

.NET2.0中一种简单的窗口控件状态控制法 private UiState uiState = new UiState();
.NET2.0中一种简单的窗口控件状态控制法
.NET2.0中一种简单的窗口控件状态控制法 public Form1() // 构造函数
.NET2.0中一种简单的窗口控件状态控制法.NET2.0中一种简单的窗口控件状态控制法 .NET2.0中一种简单的窗口控件状态控制法{
.NET2.0中一种简单的窗口控件状态控制法 InitializeComponent();
.NET2.0中一种简单的窗口控件状态控制法 uiStateBindingSource.DataSource = uiState; // 必须!!!
.NET2.0中一种简单的窗口控件状态控制法 }
.NET2.0中一种简单的窗口控件状态控制法
.NET2.0中一种简单的窗口控件状态控制法 private void EnableOrDisable(bool state)
.NET2.0中一种简单的窗口控件状态控制法.NET2.0中一种简单的窗口控件状态控制法 .NET2.0中一种简单的窗口控件状态控制法{
.NET2.0中一种简单的窗口控件状态控制法 uiState.IsEnabled = state;
.NET2.0中一种简单的窗口控件状态控制法 uiStateBindingSource.ResetCurrentItem();
.NET2.0中一种简单的窗口控件状态控制法 }
.NET2.0中一种简单的窗口控件状态控制法 private void btnEnable_Click(object sender, EventArgs e)
.NET2.0中一种简单的窗口控件状态控制法.NET2.0中一种简单的窗口控件状态控制法 .NET2.0中一种简单的窗口控件状态控制法{
.NET2.0中一种简单的窗口控件状态控制法 EnableOrDisable(true);
.NET2.0中一种简单的窗口控件状态控制法 }
.NET2.0中一种简单的窗口控件状态控制法
.NET2.0中一种简单的窗口控件状态控制法 private void btnDisable_Click(object sender, EventArgs e)
.NET2.0中一种简单的窗口控件状态控制法.NET2.0中一种简单的窗口控件状态控制法 .NET2.0中一种简单的窗口控件状态控制法{
.NET2.0中一种简单的窗口控件状态控制法 EnableOrDisable(false);
.NET2.0中一种简单的窗口控件状态控制法 }

  运行,测试OK:


 

  总结:

  对于简单的控制逻辑来说,硬编码的方式比较适合。

  但对于稍微复杂一些的控制逻辑来说,还是这种方式比较适用。因为这种方式比较灵活,并且可以直观的在设计界面上进行修改,代码也显得简洁,可读性强。

  遗憾的是,菜单项和工具栏项不是可绑定的,所以本文介绍的方式无效。而通常使用中,菜单和工具栏偏偏又是控制逻辑最复杂的。唯一的办法,只能是自定义一个Actions控件,并采用本文类似的逻辑,通过Reflection机制对菜单项和工具栏进行绑定。Delphi的Actions控件就做的相当不错。进入讨论组讨论。


上一篇:Web应用的UML建模与.NET框架开发 人气:140
下一篇:.NET 2.0里使用强类型数据创建多层应用 人气:67
点击此处浏览全部软件工程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-5-16 乘风多用户PHP统计系统 v3.4
2008-5-16 轩溪下载系统 v3.78 build 0515
2008-5-16 普沙B2B 浙江省商贸网 v2.0
2008-5-16 asp抓蜘蛛的小程序 v1.0
2008-5-16 齐齐乐网私服发布站 仿haosf新版
2008-5-16 IssTech信息反馈系统 v1.0
2008-5-16 自由领域大头贴(js接口版) 修正版
2008-5-16 医院网站系统
2008-5-16 智拓-分类信息管理系统 v5.0
2008-5-7 Windows XP SP3 官方英文版
2008-5-7 Windows XP SP3 官方香港中文版
2008-5-7 Windows XP SP3 官方繁体中文版
2008-5-7 Windows XP SP3 官方简体中文版
2008-4-30 Multiple Unzip Wizard 1.02
2008-4-30 Multiple Unrar Wizard 1.0.0
2008-4-30 WinZip Install/Try/Uninstall a
2008-4-30 ZIP压缩文件修复器WzipFix 2.0
2008-4-30 Pentazip 6.01 Build 189 For Wi
  发表评论
姓 名: 验证码: [ 全部贴吧 ] [ 浏览评论 ]
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号