统一的获取,设置UI控件值

http://tech.ddvip.com   2008年09月06日    社区交流

本文详细介绍统一的获取,设置UI控件值

  在编写WebForm或WinForm程序时,我们经常需要编写很多获取,设置UI控件值代码.这确实是一件重复,麻烦而又容易出错的工作.所以我们应该将这个工作交给计算机去做解放我们的劳动力.一般来说UI上的控件都是和我们的EntityObject相对应的,所以利用反射将EntityObject中属性值赋给控件或通过控件填充EntityObject是非常方便的.但是要想让计算机自动干活就要顶一个规则,就是控件ID = 前缀 + 属性名.比如我们有一个User类其定义如下:

class User
  {
    string _name;
    string _pwd;
    public string Name
    {
      get { return this._name; }
      set { this._name = value;}
    }
    public string Pwd
    {
      get { return this._pwd; }
      set { this._pwd = value; }
    }
};

  而我们要写一个登录界面,那我们就会有txtName和txtPwd两个文本框来接受输入(我习惯用三个字母缩写来做前缀),这样反射才能派上用场.RoR有条编程理念叫”约定由于配置”,我很同意,这可以使我们减少很多无意义的工作.

  //控件类型枚举,一些常用的WinForm和WebForm控件

public enum CtlType
  {
    TextBox,
    DropDownList,
    ComboBox,
    Hidden,
    CheckBox,
  }
  //值对象和控件根据名字相互映射
  public class ControlHelper
  {
    //id名称前缀表
    public static readonly string[] PreFix_Table = new string[5];
    static ControlHelper()
    {
      PreFix_Table[(int)CtlType.TextBox]   = "txt";
      PreFix_Table[(int)CtlType.DropDownList] = "drp";
      PreFix_Table[(int)CtlType.ComboBox]   = "cmb";
      PreFix_Table[(int)CtlType.Hidden]    = "hdn";
      PreFix_Table[(int)CtlType.CheckBox]   = "chk";
    }
//解析控件名
    private static string ParseCtlID(string id, CtlType ctlType)
    {
      return id.Replace(PreFix_Table[(int)ctlType], "");
    }
}

来源:blog.csdn    作者:傅晗    责编:豆豆技术应用

正在加载评论...