如何使用MVC编写Winform程序代码
efwplus开源框架官网:www.efwplus.cn
前提:业务分析设计已完成,界面设计完成
public interface ISugeryApplyList:IBaseView
{
//加载控件数据
void loadPatientList(DataTable dt);//控件一
void loadApplyList(DataTable dt);//控件三
void loadPatientInfo(int patientId);//控件四
void loadApplyInfo();//控件五
//获取控件数据
void getApplyInfo();//控件五
int getApplyId { get; }//当前手术申请
}
|
- 为什么控件二的数据获取没有封装成接口?我们把界面上的数据传递给控制器有两种方式,一种是通过接口,另一种是通过控制器方法的参数。
- 为什么接口会有getApplyId这个属性?因为有些数据是隐藏在控件之外的,界面上无需展示但又逻辑上少不了的(分析出这些数据是难点)。
public interface ISugeryApplyList:IBaseView
{
//加载控件数据
void loadPatientList(DataTable dt);//控件一
void loadApplyList(DataTable dt);//控件三
void loadPatientInfo(int patientId);//控件四
void loadApplyInfo();//控件五
//获取控件数据
void getApplyInfo();//控件五
int getApplyId { get; }//当前手术申请
//界面行为模式
ApplyInfoControlEnabledStyle setEnabledStyle { set; }
}
public enum ApplyInfoControlEnabledStyle
{
默认,编辑
}
|
- setEnabledStyle属性,默认下控件五为只读,编辑下控件五的数据可以修改。界面打开“控件五”为“默认”模式,当点击“控件五”上的“新增”或“修改”变为“编辑”模式,完后点击“保存”或“取消”又回到“默认”模式。
- 把界面行为封装起来肯定会让逻辑更清晰,另外一个好处就是控制器也可以通过接口操作界面行为,比如:界面在编辑模式下,我们修改了控件一的病人,所有数据将重新加载,同时控件五也必须回到“默认”模式,而这些操作都可以在控制器完成,无需在界面上编写任何代码。
public class SugeryApplyController : BaseController<ISugeryApplyList>
{
//数据初始化
public override void InitLoad()
{
DataTable patDt = null;//科室病人数据
DataTable applyDt = null;//手术申请数据
//从数据库获取数据
//todo
IfrmView.loadPatientList(patDt);
IfrmView.loadApplyList(applyDt);
}
//查询申请单列表
public void SearchApplyList(int patientId, int state)
{
DataTable applyDt = null;//手术申请数据
//todo
IfrmView.loadApplyList(applyDt);
}
//获取申请单详细信息
public void GetApplyInfo(int applyId)
{
}
//删除申请单
public void DeleteApply(int applyId)
{
}
//保存申请单
public void SaveApply()
{
}
}
|
//双击申请网格
private void dgvData_DoubleClick(object sender, EventArgs e)
{
int applyId = 0;//todo
controller.GetApplyInfo(applyId);
}
|
如何使用MVC编写Winform程序代码的更多相关文章
- 转 : 用Delphi编写安装程序
http://www.okbase.net/doc/details/931 还没有亲自验证过,仅收藏 当你完成一个应用软件的开发后,那么你还需要为该软件做一个规范化的安装程序,这是程序设计的最后一步 ...
- 编写高质量代码改善程序的157个建议:第87个建议之区分WPF和WinForm的线程模型
今天有时间了,继续<编写高质量代码改善程序的157个建议>的阅读,当我阅读到建议87的时候,里面的一些代码示例和文中所说的不一致了,是不是我现在用的是NetFramework 4.0的缘故 ...
- 编写高质量代码改善C#程序的157个建议——建议87:区分WPF和WinForm的线程模型
建议87:区分WPF和WinForm的线程模型 WPF和WinForm窗体应用程序都有一个要求,那就是UI元素(如Button.TextBox等)必须由创建它的那个线程进行更新.WinForm在这方面 ...
- Log4.Net 在Winform、MVC、ashx程序里的使用,ashx程序里使用异步
最近做一个双11活动的,是一套相关的H5页面.本来以为难度不大,但是做下来几天还是遇到些问题.就总结一下吧,还是有收获的. 1.在H5页面中,有一个遮罩层,还是挺有意思的.直接用div+css控制遮罩 ...
- 编写高质量代码改善C#程序的157个建议——建议117:使用SSL确保通信中的数据安全
建议117:使用SSL确保通信中的数据安全 SSL(Secure Socket Layer)最初是由NetScape公司设计的,用于Web安全的网络协议.目前它已经广泛应用到各类网络传输通信中了.SS ...
- 编写高质量代码改善C#程序的157个建议——建议112:将现实世界中的对象抽象为类,将可复用对象圈起来就是命名空间
建议112:将现实世界中的对象抽象为类,将可复用对象圈起来就是命名空间 在我们身边的世界中,对象是什么?对象就是事物,俗称“东西”.那么,什么东西算得上是一个对象呢?对象有属性.有行为.以动物为例,比 ...
- 编写高质量代码改善C#程序的157个建议——建议85:Task中的异常处理
建议85:Task中的异常处理 在任何时候,异常处理都是非常重要的一个环节.多线程与并行编程中尤其是这样.如果不处理这些后台任务中的异常,应用程序将会莫名其妙的退出.处理那些不是主线程(如果是窗体程序 ...
- 编写高质量代码改善C#程序的157个建议——建议79:使用ThreadPool或BackgroundWorker代替Thread
建议79:使用ThreadPool或BackgroundWorker代替Thread 使用线程能极大地提升用户体验度,但是作为开发者应该注意到,线程的开销是很大的. 线程的空间开销来自: 1)线程内核 ...
- 编写高质量代码改善C#程序的157个建议——建议73:避免锁定不恰当的同步对象
建议73:避免锁定不恰当的同步对象 在C#中,让线程同步的另一种编码方式就是使用线程锁.线程锁的原理,就是锁住一个资源,使得应用程序在此刻只有一个线程访问该资源.通俗地讲,就是让多线程变成单线程.在C ...
随机推荐
- 2014年团队博客TOP10
2014年通过这个团队博客,葡萄城共输出了51篇原创技术博客(含翻译),总阅读超过9万人次,约有1万人次是通过RSS订阅方式阅读,总评论超过500人次. 这里我们通过阅读排序,选出2014年团队博客T ...
- fir.im Weekly - 每个程序员都应当拥有的技能树
本周收集了一些优秀的 iOS & Android 开发资源和程序员 IT 技能拓展的 Tips. 知道创宇研发技能表 v3.0 作为程序员可能都听说过[知道创宇],他们是一家黑客文化浓厚的安全 ...
- iOS开发之静态库(五)—— 图片、界面xib等资源文件封装到静态框架framework
编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3) 一.首先将资源文件打包成bundle 由于bundle是静态的,所以可以将 ...
- 如何安装、配置Apache
Apache的安装流程网上版本很多,但很多版本有错误,或者缺漏,如果初学者按照那样安装的话会遇到各种各样的问题.我整理了自己安装.配置Apache的过程,亲测有效,分享给大家. 基本过程如下: Dow ...
- 详解Bootstrap进度条组件
在网页中,进度条的效果并不少见,如:平分系统.加载状态等,进度条组件使用了css3的transition和animation属性来完成一些特效,这些特效在IE9及IE9以下版本.Firefox的老版本 ...
- 如何将Scrapy 部署到Scrapyd上?
安装上传工具 1.上传工具 scrapyd-client 2.安装方法: pip install scrapyd-client 3.上传方法: python d:\Python27\Scripts\s ...
- iptables防火墙原理详解
1. netfilter与iptables Netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤.数 ...
- [C#] zdbviewcs: 跨平台数据库查看器。支持SqlServer、Oracle、MySql等数据库
作者:zyl910 一.说明 本工具有适合以下情况使用—— * 快速查看数据库中数据及表结构信息.* 测试ADO.Net下连接字符串的写法.* 帮忙分析ADO.Net数据库操作. 二.用法 运行本程序 ...
- DataGridView隔行显示不同的颜色
如果该dataGridView是跟数据库绑定的,则可以触发DataBindingComplete事件: 1private void dataGridView1_DataBindingCo ...
- C# inline-asm / 嵌入x86汇编
C#可不可以嵌入汇编 可以 在我眼中C#作为一个介于中上层语言是不可能不可以 置入汇编代码的 为什么会被我认为中上层语言呢 从C#保留指针就可以看出 我知 道有很多人一定不会相信C#可以使用汇编代码 ...