惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Help Net Security
Help Net Security
宝玉的分享
宝玉的分享
Microsoft Security Blog
Microsoft Security Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
A
About on SuperTechFans
Microsoft Azure Blog
Microsoft Azure Blog
月光博客
月光博客
量子位
博客园 - 叶小钗
Last Week in AI
Last Week in AI
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
D
DataBreaches.Net
Vercel News
Vercel News
博客园 - Franky
Recorded Future
Recorded Future
B
Blog RSS Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
GbyAI
GbyAI
M
MIT News - Artificial intelligence
F
Full Disclosure
S
SegmentFault 最新的问题
L
LangChain Blog
F
Fortinet All Blogs
美团技术团队
IT之家
IT之家
博客园 - 司徒正美
Cyberwarzone
Cyberwarzone
NISL@THU
NISL@THU
P
Privacy International News Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Y
Y Combinator Blog
C
Check Point Blog
The GitHub Blog
The GitHub Blog
L
Lohrmann on Cybersecurity
I
Intezer
I
InfoQ
Spread Privacy
Spread Privacy
Project Zero
Project Zero
T
Threatpost
S
Secure Thoughts
C
Comments on: Blog
N
News | PayPal Newsroom
Application and Cybersecurity Blog
Application and Cybersecurity Blog
H
Heimdal Security Blog
T
The Blog of Author Tim Ferriss
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Hugging Face - Blog
Hugging Face - Blog
U
Unit 42

博客园 - 一万光年外

戏说平台 第七章 可插拔主控台 心情极度不爽,发几句牢骚,恳请放首页一天 戏说平台 第六章 煮酒论编程 戏说平台 异构外篇 与朋友的QQ聊天记录 戏说平台 第五章 异构 一种独特的实现异构数据库操作的方法 戏说平台 第四章 淫贱二人组 戏说平台 第三章 学艺 CDMP平台简介 PPT格式 戏说平台 第二章 拜师 戏说平台 第一章 穿越 可配置B/S,C/S两用平台之三:自定义业务续 可配置B/S,C/S两用平台之二:自定义业务 可配置B/S,C/S两用平台之一:系统概览 Ado.net处理数据库异常 Byte[]转十六进制 安装SQL SERVER2000时出现程序挂起错误的解决方法 老生常谈,设计模式之我见 - 工厂模式篇 转载fyireporting Reporting Services主从表实现
Action设计模式的.Net实现
一万光年外 · 2006-12-22 · via 博客园 - 一万光年外
 

首先从一个场景说起:

        我们常常有这样一个需求,比如说在列表窗体(Master)有很多按钮,如增加,修改,删除,保存,取消等,不同的情况下,按钮的状态可能会不一样,比如说,只有在编辑状态时,保存,取消按钮才可用等等. 

        然后双击列表,会弹出一个明细窗体(Detail),这个窗体也有如增加,修改,删除,保存,取消等按钮,且功能和刷新条件也与Master窗体的功能差不多,我们常把各自的业务逻辑写在各自的窗体,但这样不是显得太冗余了吗,其实,我们有一种比较好的方法来解决这个问题. 

        用过DELPHI的人应该都知道,有个TACTION类解决的就是这个问题,下面我用.NET代码来模拟TACTION的实现:

1. 先设计一个命令Cmd,主要定义操作的行为(如执行,刷新)及界面的绑定(此处假定绑定类为ToolStripMenuItem,如需绑定其它类,请自己扩展).其实现代码如下:

Code

2. 设计一个Act,Cmd进行封装

Code


3.
效果演示

增加master,entry窗体,随便增加一些按钮,命好名就行了

增加master的Action动作及绑定代码

Code

增加entry绑定代码

Code

最终效果演示:

master中点击增加后的刷新效果:

打开entry后,联动的刷新效果:

由于本人比较忙且太过懒散,很久没有更新BLOG了,过年时如果有时间的话,我准备写一系列分布式框架设计的文章,望广大园友支持及指正!