需要了解组件和控件的区别, 组件编程的大概方向,以及.NET提供哪些服务(组件)来支持组件编程及设计时的事件。
有兴趣可以参考:
组件设计时的调试对象为两个:
一种对象是我们关注的组件本身。另一种则是组件的设计器。
举例一个组件MyComponet有一个属性,我需要在设置值的时候,进行调试更踪。
private string demoStringValue = null; [Browsable(true)] public string DemoString { get { return this.demoStringValue; } set { demoStringValue = value; //设置æ-点 } }
准备工作
1.创建一个library,并创建MyComponent组件,添入以上代码,并编译。
2.加入一个调试用的windows application项目TestMyComponent.
3. 设置library项目为启动项目,在属性中调试中设置启动外部程序,
设定VS的位置:
如:
D:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe
继续下去
1. 按F5开始调试过程。这时会有一个新的VS.NET实例被启动。我们在新vs中重新加载此解决方案。
4. 在windows application工程中,双击Form1打开之。
5. 在工具栏中拖入MyComponent到Form1,
6. 在属性页中,改变DemoString属性的值为Good bye。
7. 此时应当步入断点所在处。
我们已经介绍了调试组件本身。
有时候,我们会自定义设计器来实现一些特定的功能。
比如:我们要捕捉组件被加入的事件,组件被移除的事件。要解决的是访问设计时的服务。
让某控件或组件都可以通过定义设计器标签来制定自定义的设计器。
而在设计器中要想触发对应的事件,就必须取得服务对象并挂接对应事件。
自定义设计器必须从ControlDesigner或者ComponentDesigner继承
自定义初始化,并加入一个初始化化服务对象的私有方法:
可以访问的服务:
比如:我们关注的控件的加入或移除事件
ComponentAdded的事件
在这里设置断点,并重复刚才的调试动作。所不同的最后两部,
我们将控件或组件,拖入到form1时候,这时候调试进入到了Designer中。
到此为止,两种类型调试结束了。