一些设计思想的汇集(1)
来源:互联网 发布:宝贝故事软件下载 编辑:程序博客网 时间:2024/05/22 10:25
关于TextBox内容自动变换的设计:
首先定义接口
public interface IConverter {
string Convert(string value);
}
然后定义具体的转换类,比如金额类型值自动加逗号转换类
public class CurrentMoneyConverter : IConverter {
public string Convert(string value) { ...} //实现具体的转换逻辑
}
定义保存需要转换的对象控件的容器类
public class ActiveConverter {
// 保存追加的控件及其对应的转换模式
private Dictionary<Control, Queue<IConverter>> dic = new Dictionary<Control, Queue<IConverter>>();
// 追加需要转换的控件及转换模式的方法
public void AddConverter(Control control, IConverter converter) {
if (dic.ContainsKey(control)) {
if (dic[control].Contains(converter) == false) {
dic[control].Enqueue(converter);
}
} else {
Queue<IConverter> queue = new Queue<IConverter>();
queue.Enqueue(converter);
dic.Add(control, queue);
control.Leave += new EventHandler(this.DoConversion);
}
}
// 转换事件
private void DoConversion(object sender, EventArgs e) {
Control control;
if (sender is Control) {
control = (Control)sender;
} else {
return;
}
Queue<IConverter> queue;
if (dic.ContainsKey(control)) {
queue = dic[control];
} else {
return;
}
foreach (IConverter converter in queue) {
try {
control.Text = converter.Convert(control.Text);
} catch {
// TODO
}
}
}
public ActiveConverter() {
return;
}
}
最后,在画面类里定义ActiveConverter 的实例,在画面出始化的时候,实例化,并追加需要转换的控件
this.activeConverter.AddConverter(this.tbxA, new CurrentMoneyConverter());
this.activeConverter.AddConverter(this.tbxB, new AlphanumericOnlyConverter());
此设计思想重点在于简化画面类设计,使其只专注于数据表示.
- 一些设计思想的汇集(1)
- 一些设计思想的汇集(2)
- JQuery的一些设计思想
- 一些工具的汇集
- 汇集的一些文章
- 搜索汇集了一些设计相关的书籍
- Web分页技术的思想汇集
- NDK的一些文章汇集
- elasticsearch的一些优化汇集
- Hibernate一些变态的设计思想
- 一些大型工具软件的设计思想
- Android的一些设计思想(201603)
- 一些设计思想
- java基础思想汇集
- 汇集平时用到的一些命令
- Linux中的一些命令的汇集
- freeBSD中的一些设计思想
- 关于网站系统性能的一些设计思想
- C#3.0入门系列(六)-之OrderBy操作
- 在Oracle10g中如何建立没有域名的DB_LINK
- 排序算法
- 排序算法
- C#3.0入门系列(七)--之OR工具介绍
- 一些设计思想的汇集(1)
- C#3.0入门系列(八)-之GroupBy操作
- C#3.0入门系列(九)-之GroupBy操作
- 【经验】CruiseControl.Net的安装、配置和遇到的一些问题
- 更改远程桌面连接端口
- 获取CPU相关信息的实例
- VB 通过MSComm控件取得打印机的状态:正常、缺纸、卡纸等
- .sh打包
- 将ACCESS的ole对象导出为文件