知识大全 自验证文本框和Observer模式

Posted

篇首语:人的知识愈广,人的本身也愈臻完善。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 自验证文本框和Observer模式相关的知识,希望对你有一定的参考价值。

自验证文本框和Observer模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  最近写程序当中需要做一个表单提交(WinForm) 当所有的表单项目符合要求时 提交按钮为可用 否则不可用 一般我们需要写一个验证的函数 然后触发TextBox的某个事件来调用函数 函数中记录下是否所有的表单项目都符合要求 是则提交按钮可用

  关于自验证本文框 在CodeProject上找到了TextBoxRegex 是一个不错的自验证TextBox

  关于Observer模式 按照四人团的说法 Observer 模式的意图是 定义对象间的一种一对多的依赖关系 当一个对象的状态发生改变时 所有依赖于它的对象都得到通知并自动更新

  直接给代码

  第一步 定义两个接口

  IObserver接口

    public interface IObserver             void Update();        void Attach(ISubject sub);        void Detach(ISubject obs);        IList MySubject   get;      

  ISubject接口

public interface ISubject             IList MyObserver   get ;          void Attach(IObserver obs);        void Detach(IObserver obs);        void Notify();        bool IsValided();    

  第二步 写TextBox Button控件 这里用到了TextBoxRegex

  TextBox控件

    public class CNWTextbox : TextBoxRegex  ISubject             private ArrayList obsList;        public CNWTextbox()                     obsList = new ArrayList();            this UseInvalidTextException = true;                ISubject 成员#region ISubject 成员        public IList MyObserver                     get   return obsList;                 public void Attach(IObserver obs)                     obsList Add(obs);            obs Attach(this);                public void Detach(IObserver obs)                     obsList Remove(obs);            obs Detach(this);                public void Notify()                     foreach (IObserver obs in obsList)                             obs Update();                            #endregion        protected override void OnTextChanged(EventArgs e)                     base OnTextChanged(e);            //通知所有Observer更新自己             Notify();                public bool IsValided()                     try                             string temp = this TextValidated;                return true;                        catch (Chopeen InvalidTextException ex)                             Console WriteLine(ex ToString());                return false;                        

  Button控件

public class CNWButton:Button IObserver             private ArrayList mySubjects;        public CNWButton()                     mySubjects = new ArrayList();                IObserver 成员#region IObserver 成员        void IObserver Update()                     foreach (ISubject sub in mySubjects)                             if (sub IsValided())                                     this Enabled = true;                                else                                     this Enabled = false ;                    break;                                            void IObserver Attach(ISubject sub)                     mySubjects Add(sub);                void IObserver Detach(ISubject sub)                     mySubjects Remove(sub);                System Collections IList IObserver MySubject                     get   return mySubjects;                 #endregion    

  第三步 使用

  cnwTextbox cnwTextbox cnwButton 是上面制作的控件

private void Form _Load(object sender  EventArgs e)                     cnwTextbox Attach(cnwButton );            cnwTextbox Attach(cnwButton );         cha138/Article/program/net/201311/13047

相关参考

知识大全 java 设计模式之 观察者模式(Observer)

java设计模式之观察者模式(Observer)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 利用Observer模式解决组件间通信问题

利用Observer模式解决组件间通信问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  问题的

知识大全 .net中委托,时间和Observer设计模式

.net中委托,时间和Observer设计模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  将

知识大全 鼠标焦点离开文本框时验证的js代码

本文为大家介绍下利用js来验证文本框的值当鼠标焦点离开文本框时进行验证示例代码如下感兴趣的朋友可以参考下哈希望对大家有所帮助   利用js来验证文本框的值复制代码代码如下:lishixinz

知识大全 struts2自定义验证器(身份证验证)

  struts的验证器是用的xwork里面的验证自定义验证器就是根据源码继承已有的字段验证器而来具体步骤如下:  展开xworkjaropensymphonyxwork  validatorvali

知识大全 word2007文本框内文字的垂直对齐无法设置,三种模式的按钮都是灰色的。求高手指点

word2007文本框内文字的垂直对齐无法设置,三种模式的按钮都是灰色的。求高手指点!用word2007修改2003兼容的文档才会出现这个问题,如果另存为2007文档,则没有这个问题。(我试验过了)w

知识大全 自定义创建web验证控件

  做开发的都知道在VS里提供了很多的验证控件比如RequiredFieldValidatorRangeValidatorRegularExpressionValidator等等他们都是继承于Base

知识大全 FCKeditor自定义非空验证

FCKeditor自定义非空验证  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  有时在使用FCK

知识大全 php设计模式之观察者模式的应用详解

 代码如下:<?php//抽象主题interfaceSubjectpublicfunctionattach($observer);publicfunctiondetach($obser

知识大全 ASP.NET MVC如何实现自定义验证

ASP.NETMVC如何实现自定义验证  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &