C#基础系列:开发自己的窗体设计器(PropertyGrid显示中文属性名)

【转    http://blog.csdn.net/ronotian/article/details/3183907

 

既然是一个窗体设计器,那就应该能够设置控件的属性,设置属性最好的当然是PropertyGrid了,我们仅仅需要使用一个PropertyGrid.SelectedObject = Control就可以搞定,让PropertyGrid显示Control的所有属性。可是这里显示的属性名是英文的。对于我们开发人员来说这无可厚非,我们也乐于接受。并且让PropertyGrid显示中文属性名,这对于我们开发人员的使用来说显得多此一举。可是,对于我这种类型的一个应用工具,英文属性名对于很多客户来说可能就很难懂了。所以应该让PrpertyGrid能够显示中文属性名。

如图:

 

 

另外,对于这样的一个系统。并不是控件的所有属性都是用户希望的,可能用户希望看到的仅仅是控件高度、控件宽度、控件文本。。等等的属性,但是如果直接将一个控件属性全部显示给用户的话,估计对用户造成的干扰和困惑是很大的。如何解决这个问题呢?其实用户控件开发的时候,如果我们不希望此属性在PropertyGrid中显示,我们可以设置这个控件的Attribute,如:

[Browsable(false)]

publicint Width

{

    get { }

    set { }

}

通过使用BrowsableAttribute就可以设置将此属性对PropertyGrid隐藏。

 

你可能要问到了,对于控件来说,其中的很多属性都是直接继承来的,我们并没有办法控制是否对PropertyGrid隐藏啊?呵呵,对啊,这就是我下面要说的解决方法(当然此方法显得不是很灵活,但是对于这种类型的系统的确相当有用)。

在我的解决方式中,我不直接这样PropertyGrid.SelectedObject = Control,而是把这个Control替换成一个专门为此类型的Control设计的类对象上。比如我对TextBox设计了一个TextBoxProperty,这样我们使用的是PropertyGrid.SelectedObject = TextBoxProperty的一个对象。

下面就是TextBoxProperty的代码:

  1. public class TextBoxProperty : PropertyBase
  2. {
  3.     private TextBox _Control;
  4.     public TextBoxProperty()
  5.     {
  6.     }
  7.     public TextBoxProperty(TextBox control)
  8.     {
  9.         this._Control = control;
  10.     }
  11.     [MyControlAttibute("文本", "获取或者设置控件文本", "")]
  12.     public string Text
  13.     {
  14.         get { return this._Control.Text; }
  15.         set
  16.         {
  17.             this._Control.Text = value;
  18.         }
  19.     }
  20.     [MyControlAttibute("宽度", "获取或者设置控件宽度", "")]
  21.     public int Width
  22.     {
  23.         get { return this._Control.Width; }
  24.         set
  25.         {
  26.             this._Control.Width = (int)value;
  27.         }
  28.     }
  29.     [MyControlAttibute("高度", "获取或者设置控件高度", "")]
  30.     public int Height
  31.     {
  32.         get { return this._Control.Height; }
  33. <
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值