csharp高级属性定义 下载本文

15. EventArgs e = new EventArgs(); 16. Console.Write(\); 17. string s = Console.ReadLine();

18. //在用户输入一个小a的情况下触发事件,否则不触发 19. if (s == \) 20. {

21. SomeEvent(this, e); 22. } 23. }

24. //事件的触发者自己对事件进行处理,这个方法的参数必须和代理中声名的一致 25. private void ProcessSomeEvent(object sender, EventArgs e) 26. {

27. Console.WriteLine(\); 28. } 29. }

[c-sharp] view plaincopy

1. ///

2. /// 事件的接收和处理者 3. ///

4. class Container 5. {

6. private Control ctrl = new Control(); 7. public Container() 8. {

9. //这里使用的delegate必须与事件中声名的一致

10. ctrl.SomeEvent += new Control.SomeHandler(this.ResponseSomeEvent); 11. ctrl.RaiseSomeEvent(); 12. }

13. public static void Main() 14. {

15. Container pane = new Container(); 16. Console.ReadLine(); 17. }

18. //这是事件的接受者对事件的响应

19. private void ResponseSomeEvent(object sender, EventArgs e)

20. {

21. Console.WriteLine(\); 22. } 23. }

[c-sharp] view plaincopy

1. //程序运行的结果如下: 2. please input 'a':a 3. hello

4. Some event occur!

而我们看到的工具箱上的每个控件都有自己的图标,我们可以通过下面语句为自己制作的控件添加图标。

[c-sharp] view plaincopy

1. [ToolboxBitmap(@\)] 2. public partial class UserControl1 : UserControl 3. {………….}

即在控件类前面加上ToolboxBitmap属性,属性参数指向一个图片的地址就可以了。 再比如,我自己定义了一个属性,如果不进行设置,是不会在属性窗口显示的,也就是我们在用控件的时候不能够通过可视化的界面对其进行设置,想让它在属性窗口显示,就要用Browsable属性了,如下面的例子。

[c-sharp] view plaincopy

1. public enum DrawingMode{Happy = 0,Sad = 1,Angry = 2} 2. private DrawingMode myDrawingMode; 3. [Browsable(true)]

4. public DrawingMode MyDrawingMode 5. { 6. get 7. {

8. return myDrawingMode; 9. } 10. set 11. {

12. myDrawingMode = value; 13. } 14. }

像这样的属性还可以组合使用,例如上面的例子,我在Browsable属性后面再加上一个Category属性,让它的参数等于Appearance,这时我们自己定义的属性就从属性框中的杂项转到了外观项里面了。

[c-sharp] view plaincopy

1. [Browsable(true), Category(\

像这样的属性有很多,我主要罗列下面这些,在使用的时候大家可以参照。 Browsable

适用于属性和事件,指定属性或事件是否应该显示在属性浏览器中。 Category

适用于属性和事件,指定类别的名称,在该类别中将对属性或事件进行分组。当使用了类别时,组件属性和事件可以按逻辑分组显示在属性浏览器中。 Description

适用于属性和事件,定义一小块文本,该文本将在用户选择属性或事件时显示在属性浏览器底部。 Bindable

适用于属性 指定是否要绑定到该属性。 DefaultProperty

适用于属性,(将此特性插入类声明前。)指定组件的默认属性。当用户单击控件时,将在属性浏览器中选定该属性。 DefaultValue

适用于属性,为属性设置一个简单的默认值。 Editor

适用于属性,指定在可视设计器中编辑(更改)属性时要使用的编辑器。 Localizable

适用于属性,指定属性可本地化。当用户要本地化某个窗体时,任何具有该特性的属性都将自动永久驻留到资源文件中。 DesignerSerializationVisibility

适用于属性,指定显示在属性浏览器中的属性是否应该(以及如何)永久驻留在代码中。 TypeConverter

适用于属性,指定将属性的类型转换为另一个数据类型时要使用的类型转换器。 DefaultEvent

适用于事件,(将此特性插入类声明前。)指定组件的默认事件。这是当用户单击组件时在属性浏览器中选定的事件。