zoukankan      html  css  js  c++  java
  • 如何:.NET 组件/控件在设计时的调试

    本文主要介绍如何在设计时对组件的调试,多数情况开发人员用MessgeBox来弹出信息进行调试,但无法进入到代码内部。因此本文以图解的方式来介绍。本文参考了微软MSDN中《演练:设计时调试自定义 Windows 窗体控件》,鉴于其中文版翻译很晦涩,建议大家参考本文

     

    背景知识介绍

    需要了解组件和控件的区别, 组件编程的大概方向,以及.NET提供哪些服务(组件)来支持组件编程及设计时的事件。

    image

    有兴趣可以参考:

    .net控件编程 - 资料篇

     

    STEP BY STEP 调试

    组件设计时的调试对象为两个:
    一种对象是我们关注的组件本身。另一种则是组件的设计器。

    举例一个组件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

    image

    继续下去   

    1. 按F5开始调试过程。这时会有一个新的VS.NET实例被启动。我们在新vs中重新加载此解决方案。

    image

    4. 在windows application工程中,双击Form1打开之。
    5.     在工具栏中拖入MyComponent到Form1,   
    6. 在属性页中,改变DemoString属性的值为Good bye。   
    7. 此时应当步入断点所在处。

    image

    我们已经介绍了调试组件本身。

    有时候,我们会自定义设计器来实现一些特定的功能。

    比如:我们要捕捉组件被加入的事件,组件被移除的事件。要解决的是访问设计时的服务。

    让某控件或组件都可以通过定义设计器标签来制定自定义的设计器。

    clip_image001

    而在设计器中要想触发对应的事件,就必须取得服务对象并挂接对应事件。

    自定义设计器必须从ControlDesigner或者ComponentDesigner继承

    clip_image002

    自定义初始化,并加入一个初始化化服务对象的私有方法:

    clip_image003

    可以访问的服务:

    clip_image004

    比如:我们关注的控件的加入或移除事件

    clip_image005

    ComponentAdded的事件

    clip_image006

    在这里设置断点,并重复刚才的调试动作。所不同的最后两部,

    我们将控件或组件,拖入到form1时候,这时候调试进入到了Designer中。

    到此为止,两种类型调试结束了。

  • 相关阅读:
    [BZOJ 3774] 最优选择 【最小割】
    [XJOI NOI2015模拟题13] C 白黑树 【线段树合并】
    [BZOJ 2212] [Poi2011] Tree Rotations 【线段树合并】
    [XJOI NOI2015模拟题13] B 最小公倍数 【找规律】
    [XJOI NOI2015模拟题13] A 神奇的矩阵 【分块】
    [XJOI NOI02015训练题7] B 线线线 【二分】
    Java+Maven+selenium+testng+reportng自动化测试框架
    selenium实例:unittest框架+PO开发模式
    WebDriver驱动下载地址
    testng 执行多个suite
  • 原文地址:https://www.cnblogs.com/king_astar/p/1592416.html
Copyright © 2011-2022 走看看