中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 临时文章
检查窗体中数据填写正确性的方法
作者:未知 时间:2004-12-09 12:12 出处:Blog 责编:chinaitpower
              摘要:暂无

//检查窗体中数据填写正确性的方法(类)
利用每一个控件的Tag属性,确定这个控件的数据类型,是否允许空 (个位为1表示不能为空,个位为0表示可以为空,十位数表示数据类型;参看源码)

如果改为使用正则表达式,可能更好。
//使用:
try
{
CheckFormControls.TCheckFormControls.CheckForm_Data(Object parentControl);
}
catch(Exception err)
   {
    MessageBox.Show(err.Message);
   }

//源码
namespace CheckFormControls
{
 public enum TKhyhDataType: int
 {
  Unknow=0,
  Integer=1,
  Float=2,
  String=3,
  Date=4,
  DateTime=5,
  Time=6,
  Number=7 //it only use 0-9 numbers, for example: 08688122784
 }
 /// <summary>
 /// CheckFormControls
 /// </summary>
 public class TCheckFormControls
 {
  public const string SELECT_ITEM="Please select a item in \"{0}\".";
  public const string COULD_NOT_EMPTY="\"{0}\" could not be empty, please check it.";
  public const string ERROR_IN_CONVERT="'{0}' couldn't be convert to {1}, please check your input in \"{2}\".";
  public const string ERROR_INPUT="It only can be input {0}, please check your input in \"{1}\"";

  private static bool ParseTypeValue(object tag, out TKhyhDataType  ofDataType, out string sDataType, out bool bNeedData)
  {
   if(tag==null)
   {
    ofDataType=TKhyhDataType.Unknow;
    sDataType=ofDataType.ToString();
    bNeedData=false;
    return false;
   }
  
   int ofTypeValue;
   try
   {
    ofTypeValue=Convert.ToInt32(tag.ToString());
    bNeedData=((ofTypeValue%10)==1);
    ofTypeValue=(ofTypeValue-(ofTypeValue%10))/10;

    ofDataType=(TKhyhDataType)System.Enum.Parse(typeof(TKhyhDataType),ofTypeValue.ToString());
    sDataType=ofDataType.ToString();
   }
   catch
   {
    ofDataType=TKhyhDataType.Unknow;
    sDataType=ofDataType.ToString();
    bNeedData=false;
    return false;
   }
   return true;
  }
  /// <summary>
  /// CheckForm_Data
  /// </summary>
  /// <param name="parentSender"></param>
  /// It check control sort by control's TabIndex
  /// Data Type is by control's Tag
  /// Control's name is read from controls' AccessibleDescription
  public static void CheckForm_Data(Control parentSender)
  {
   Control obj, obj2;
   TKhyhDataType ofDataType;
   bool bNeedData;
   string objName;
   string sDataType;

   ArrayList arrList=new ArrayList();
   int idx;
   for(int i=0; i<parentSender.Controls.Count; i++)
   {
    obj=parentSender.Controls[i];
    idx=arrList.Count;
    for(int j=0; j<arrList.Count; j++)
    {
     obj2=(Control)arrList[j];
     if(obj.TabIndex<obj2.TabIndex)
     {
      idx=j;
      break;
     }
    }
    arrList.Insert(idx,obj);
   }

   for(int i=0; i<arrList.Count; i++)
   {
    obj=(Control)arrList[i];
    if(obj is Panel)
    {
     CheckForm_Data(obj);
     continue;
    }

    if(!ParseTypeValue(obj.Tag,out ofDataType, out sDataType, out bNeedData))
     continue;

    if(obj.Tag==null)
     continue;

    //MessageBox.Show(obj.Name.ToString());
    //continue;

    if(obj.AccessibleDescription==null)
     objName="";
    else
     objName=obj.AccessibleDescription.ToString();
    if(objName.Length==0)
     objName=obj.Name;

    if (obj is ListBox)
    {
     ListBox lstObj=obj as ListBox;
     if(bNeedData && lstObj.SelectedItems.Count==0)
     {
      //lstObj.BackColor=Color.Red;
      throw new Exception(string.Format(SELECT_ITEM,objName));
     }
    }
    else if(obj is ComboBox)
    {
     ComboBox lstObj=obj as ComboBox;
     if(bNeedData && lstObj.SelectedItem==null)
     {
      //lstObj.BackColor=Color.Red;
      throw new Exception(string.Format(SELECT_ITEM,objName));
     }
    }
    else if(obj is TextBox)
    {
     TextBox textObj=obj as TextBox;
     string v=textObj.Text;

     if(v.Length==0)
     {
      if(bNeedData)
       throw new Exception(string.Format(COULD_NOT_EMPTY,objName));
      else
       continue;
     }

     switch(ofDataType)
     {
      case TKhyhDataType.Integer:
       try
       {
        Convert.ToInt32(v);
       }
       catch
       {
        throw new Exception(string.Format(ERROR_IN_CONVERT,v,sDataType,objName));
       }
       break;

      case TKhyhDataType.Float:
       try
       {
        Convert.ToDouble(v);
       }
       catch
       {
        throw new Exception(string.Format(ERROR_IN_CONVERT,v,sDataType,objName));
       }
       break;
      case TKhyhDataType.String:
       break;
      case TKhyhDataType.Date:
      case TKhyhDataType.DateTime:
      case TKhyhDataType.Time:
       try
       {
        Convert.ToDateTime(v);
       }
       catch
       {
        throw new Exception(string.Format(ERROR_IN_CONVERT,v,sDataType,objName));
       }
       break;
      case TKhyhDataType.Number:
       try
       {
        Convert.ToInt32(v);
       }
       catch
       {
        throw new Exception(string.Format(ERROR_INPUT,sDataType,objName));
       }
       break;
      default:
       break;
     }
    }
   }
  }
 }
}

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有