张晓华的博客

        2005年,最后一场雪,还是下了,虽然凄凉了一些!
posts - 185, comments - 100, trackbacks - 8, articles - 1

Wednesday, September 7, 2011

自从地主家的狗腿子方滨兴开始砌墙后,这个博客是越来越荒废了,现在又开始维护了,不过不是地主把大门开开了,而是我们找了个梯子,真他妈的得谢谢广大的翻墙爱好者,也感谢方狗腿子给了我们学习技术的机会,

posted @ 1:53 PM | Feedback (2)

如果是要在设计模式使用,新建一个继承自System.Windows.Forms.Design.ControlDesigne的类,比如叫MyDesigner,改写其中的PreFilterProperties方法:
  protected override void PreFilterProperties(IDictionary properties)
  {
  properties.Remove("property1");
  properties.Remove("property2");
  }

在你的控件类定义前加上
[Designer(typeof(MyDesigner))]
不过这种方法,实际是在设计模式时把这些属性从控件中去掉了,这样会丢失有些对控件必不可少的属性,比如大小,位置等,对于可视控件这些是在设计模式时必须存在的,去掉了会使设计器报错。

如果是要在程序运行时使用,那可以建一个TypeConverter类。

而实际上,用BrowsableAttribute在两种情况下都可以达到效果,也没有什么后遗症。比如要屏蔽Size属性
  [Browsable(false)]
  new public Size Size
  {
  get
  {
  return base.Size;
  }
  set
  {
  base.Size = value;
  }
  }
注意Size属性是不能override的,只能用new关键字屏蔽掉基类的。

posted @ 1:48 PM | Feedback (0)

Attribute在C# WinForm控件开发中的使用的实例

    这个类是直接从Control类派生出来的,自定义控件都是直接从Control类派生出来的。这个类定义了一个属性TextAlignment,用来控制文本在控件中显示的位置:

  1. [  
  2. Category("Alignment"),  
  3. Description("中文提示加这里")  
  4. ]  
  5. public ContentAlignment TextAlignment  
  6. {  
  7. get 
  8. {  
  9.  return alignmentValue;  
  10. }  
  11. set 
  12. {  
  13.  alignmentValue = value;  
  14.  // The Invalidate method invokes the OnPaint method described   
  15.  // in step 3.  
  16.  Invalidate();  
  17. }  

    在这个属性之上有两个Attribute,这两个attribute描述了控件在设计时所表现出来的特征。我们来看看在控件设计中有哪些主要用到的设计时Attribute。 

    Attribute在C# WinForm控件开发中的使用所用到的属性:

    ◆BrowsableAttribute:描述是否一个属性或事件应该被显示在属性浏览器里。

    ◆CategoryAttribute:描述一个属性或事件的类别,当使用类别的时候,属性浏览器按类别将属性分组。

    ◆DescriptionAttribute:当用户在属性浏览器里选择属性的时候,description里指定的文本会显示在属性浏览器的下边,向用户显示属性的功能。

    ◆BindableAttribute:描述是否一个属性倾向于被绑定。

    ◆DefaultPropertyAttribute:为组件指定一个默认的属性,当用户在Form设计器上选择一个控件的时候,默认属性会在属性浏览器里被选中。

    ◆DefaultValueAttribute:为一个简单类型的属性设置一个默认值。

    ◆EditorAttribute:为属性指定一个特殊的编辑器。

    ◆LocalizableAttribute:指示一个属性是否能被本地化,任何有这个Attribute的属性将会被持久化到资源文件里。

    ◆DesignerSerializationVisibilityAttribute:指示一个属性是否或者如何持久化到代码里。

    ◆TypeConverterAttribute:为属性指定一个类型转换器,类型转换器能将属性的值转化成其它的数据类型。

    ◆DefaultEventAttribute:为组件指定一个默认的事件,当用户在form设计其中选择一个控件的时候,在属性浏览器中这个事件被选中。

    这些设计时的Attribute时很重要的,如果使用的好,将会对用户的使用带来很大的便利。

    那么关于Attribute在C# WinForm控件开发中的使用内容就向你介绍到这里,希望对你了解和学习Attribute在C# WinForm控件开发中的使用有所帮助。

posted @ 12:52 PM | Feedback (0)

 看着工具栏里的那个齿轮很是不爽,尤其是写商业控件,总不能全部是齿轮图标。

      1。建议做16*16的ico图标,因为ico可以背景透明,至于是多少色的我也不知道,我用软件直接转的。拖进去再拖出来就是ICO了。

      2。把图标文件和cs文件放在相同的目录下。

      3。解决方案管理器里点“显示所有文件”,找到图标文件,右击、包含到项目内。

      4。选择图标文件属性里的“生成操作”里选“嵌入的资源”

      5。在用户控件里的代码文件(cs文件)中天添加两行代码:
    [ToolboxItem(true)]
    [ToolboxBitmap(typeof(控件类名), "图标文件名")]

添加位置为项目的namespace下边,例如

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace BInput
{
    [ToolboxItem(true)]
    //[ToolboxBitmap(@".\FirstTrial.bmp")]    //添加到这里
    [ToolboxBitmap(typeof(FirstTrial), "FinalTrail.ico")]
    public partial class FinalTrail : UserControl
    {
        public FinalTrail()
        {
            InitializeComponent();
        }
    }
}

编译后就可以了。


posted @ 12:49 PM | Feedback (0)