C#中的自定义控件中的属性、事件及一些相关特性的总结
今天学习了下C#用户控件开发添加自定义属性的事件,主要参考了MSDN,总结并实验了一些用于开发自定义属性和事件的特性(Attribute)。
在这里先说一下我的环境:
操作系统:Windows7旗舰版(Service Pack 1)
VS版本:Microsoft Visual Studio Ultimate 2012,版本 11.0.50727.1 RTMREL
.NET Framework版本:4.5.50938
C#版本:Visual C# 2012
1、建立一个C#窗体应用程序,主窗体起名为FormMain,向解决方案中再加入一个用户控件,起名为TestUserControl
2、在TestUserControl中放一个按钮,取名为btnTest
3、控件做好后,会出现在【工具箱】内
4、将控件拖拽到一个窗体(Form)上就可以使用了,取名testUserControl1。这个名字是VS默认取的,即首字母小写,最后补上数字作为序号。
在TestUserControl类中,添加下面的代码:
/// <summary> /// 按钮名称 /// </summary> public string ButtonName { get { //TODO return btnTest.Text; } set { //TODO btnTest.Text = value; } }代码添加完毕后,在FormMain上加入的testUserControl1的属性中,就会出现BtnName了
在TestUserControl类中,添加下面的代码:
/// <summary> /// 事件 /// </summary> public event EventHandler BtnTestClick; /// <summary> /// 测试按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnTest_Click(object sender, EventArgs e) { if (BtnTestClick != null) { //TODO BtnTestClick(sender, e); } }代码添加完毕后,在FormMain上加入的testUserControl1的事件中,就会出现BtnTestClick了
在FormMain的代码中实现这个函数
这时运行程序,点击控件testUserControl1内的按钮btnTest,就会有下面的效果:
1)DefaultEvent和DefaultProperty:指定自定义控件的默认事件和默认属性
DefaultEventAttribute(MSDN)可以用来指定组件的默认事件,如在TestUserControl类上面加入代码
[DefaultEvent("BtnTestClick")]那在Form编辑界面,双击控件testUserControl1就会自动进入testUserControl1_BtnTestClick事件。
这里再说明一下,C#中的System.Windows.Forms.Control类代码如下:
[ClassInterface(ClassInterfaceType.AutoDispatch)] [ComVisible(true)] [DefaultEvent("Click")] [DefaultProperty("Text")] [Designer("System.Windows.Forms.Design.ControlDesigner, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] [DesignerSerializer("System.Windows.Forms.Design.ControlCodeDomSerializer, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.ComponentModel.Design.Serialization.CodeDomSerializer, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] [ToolboxItemFilter("System.Windows.Forms")] public class Control : Component, IDropTarget, ISynchronizeInvoke, IWin32Window, IBindableComponent, IComponent, IDisposable { /* ... */ }这里可以看到DefaultEvent的值为“Click”,这也就是为什么拖入Form的按钮(Button),在双击后会进入它的Click事件:
private void button1_Click(object sender, EventArgs e)温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/69252.html
- 上一篇:C# Math类简介
- 下一篇:C#开源系统大汇总