我用验证控件在对页面的控件进行验证时,能否用一个验证控件对此页面的同一类型的多个控件进行验证,还是说只能是一个验证控件验证页面的一个要验证的控件,那要是这样的话,我要是要对30个要验证的页面控件进行验证的话,不是要加30个验证控件,而不能用一个或者是两个验证控件解决呢???

解决方案 »

  1.   

    我推荐一种方法:
    为你的验证控件实现IExtenderProvider接口
    实现了该接口的组件可以为满足某种条件(对于你来说条件就是需要验证的控件)提供扩展属性,通过对这些扩展属性的设置来调用验证的方法。我写个简单的实现吧,不过代码未通过验证
        [ProvideProperty("ValidateMethod", typeof(Control))]
        public class Component1 : System.ComponentModel.Component ,IExtenderProvider
        {
            private  Hashtable _innerTable = new Hashtable();        public bool GetValidateMethod(Control control)
            {
                return (bool)_innerTable[control];
            }        public void SetValidateMethod(Control c1, bool v1)//true则参加验证
            {
                if(_innerTable.Contains(c1))
                {
                    _innerTable[c1]=v1;
                }
                else
                {
                    _innerTable.Add(c1,v1);
                }
            }        #region IExtenderProvider 成员        public bool CanExtend(object extendee)
            {
                if(extendee is 某种需要验证的控件)  
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            #endregion  当需要验证时只要遍历_innerTable ,值为true的即需要验证。即可
      可以看一下这里
      http://www.cnblogs.com/aiyagaze/archive/2006/09/08/498370.html
      我原来写过一下这个