博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一些设计思想的汇集(1)
阅读量:5966 次
发布时间:2019-06-19

本文共 1455 字,大约阅读时间需要 4 分钟。

  hot3.png

关于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());

 

此设计思想重点在于简化画面类设计,使其只专注于数据表示.

转载于:https://my.oschina.net/cjkall/blog/195889

你可能感兴趣的文章
Linux配置文件字体颜色
查看>>
JSP九大内置对象及四个作用域
查看>>
我的友情链接
查看>>
Exsi 5.0 物理端口捆绑+VRRP+DvSwitch配置
查看>>
Dubbo下一站:Apache顶级项目
查看>>
nginx负载均衡&文件服务器配置&虚拟目录&代理&refer防盗链
查看>>
iOS xib开发小技巧
查看>>
Java线程:新特征-线程池
查看>>
Zabbix监控Oracle 连接数
查看>>
memcached演练(2) 访问memcached服务
查看>>
PUT上传POC--Put2Poc.py
查看>>
Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
查看>>
Web服务器的工作原理
查看>>
centos6下的ulimit问题
查看>>
在gns3中搭建VTP演示实验
查看>>
linux灾难恢复
查看>>
.net 连接ORACLE 数据库字符串
查看>>
cookie知识,小应用:记住用户名;记录用户浏览记录
查看>>
运维经验分享:关于系统运维监控的几点建议
查看>>
七种Spring事务传播特性
查看>>