MANAGED SPY:用我们的新工具继续Spy 对Windows Forms的神话

ManagedSpy是一款针对.NET Framework 2.0的应用程序,它提供了类似Spy++的功能,但专注于托管事件和属性。该工具能显示控件树视图,允许在运行时查看和修改属性,以及记录和过滤控件事件,特别适用于UI调试和测试。通过ManagedSpy,开发者可以更轻松地调试涉及焦点、布局等UI问题,以及检查和验证控件事件顺序。
摘要由CSDN通过智能技术生成

原著:Benjamin Wulfe

翻译:小刀人

原文出处:MSDN Magazine April 2006
原代码下载:ManagedSpy.rar

本文使用.NET Framework 2.0


本文讨论:

  •   新工具ManagedSpy
  •   理解ManagedSpy在调试中如何工作和起作用的
  •   看看ManagedSpyLib的内部工作机制
  •   在单元测试中使用ManagedSpyLib

   有不少开发者使用Visual Studio®提供的工具Spy++。使用Spy++,你可以了解一个运行中的应用程序的窗体布局或确定一个导致bug的特定窗体消息。然而,当你创建一个基于Microsoft® .NET框架的应用程序,Spy++变得不太管用了,因为由Spy++截取窗体消息和类不能与开发者使用或甚至看到的任何事情通信。开发者真正所想看到的是被托管的事件和属性值。
     本文描述如何使用一个名为ManagedSpy的新工具并且它的关联库ManagedSpyLib,它们均可从MSDN®Magazine网址下载(译注:已包含在本文源代码下载链接ManagedSpy.rar中,其中的TestManagedSpy解决方案是译者为方便大家所做)。与Spy++显示Win32® 信息比如窗体类、样式和消息相似,ManagedSpy显示托管控件、属性和事件。ManagedSpyLib允许你以编程方式访问另一个进程中的Windows®窗体控件。你可以获得并设置属性以及在你自己的代码中事件上同步。ManagedSpyLib也可以帮助你创建测试带(test harnesses)并且可以执行窗体、消息和事件记录(event logging)。

监视你的UI(用户界面)
     当编写客户应用程序,这里有些是传统调试器不能发挥作用的案例。举个例子,如果你的bug涉及焦点或其他UI方面(的问题),它是很难来调试的,因为无论何时你碰到了一个断点(breakpoint)调试器修改了状态。另一个问题很难调试就是布局。如果你的窗体有一个复杂和动态布局,不论你的布局逻辑是否被调用多次它不一定总是明显的。为了调试这些问题,你一般必须诉诸于事件或消息记录以对你的UI获得的输入获得了解。
     有着复杂的UI,对于窗体和关联状态的有所了解是有用的。举个例子,在调试器中定位相关控件对象可能会是很难的。大多数时候你必须猜测一个调试器变量就是一个你在UI中看到的。
     图 1显示了一个有着一些嵌套控件的对话框。这个应用程序在右上方文本框有一个bug,虽然这个例子目的的真正所在并不是这个bug是什么。它将用来确定:不但它的成员是红色文本框而且也是父层次和相关控件的布局

图1 问题对话框
     ManagedSpy可以对这个状况和其他(状况)有所帮助。它在你的基于.Net的客户应用程序中展示一个控件的树视图。你可以选择任何控件以及在上面获得或设置任何属性。你也可以记录控件生成的过滤后的一系列事件(译注:这是该工具的功能之一)。在调试时很有用,在你的控件的兼容性测试中也可以有所帮助。你可以使用真实应用(real applications)和记录事件(log events)以确保你的控件的下一个版本的事件顺序被保存。
     当你首次运行ManagedSpy,它在窗体左边的一个treeview(树视图)中显示一个进程列表同时在右边显示一个PropertyGrid(属性格)。你可以扩展这个进程来查看这个进程中的顶级窗体。
     当你选择了一个控件,PropertyGrid显示了该控件上的属性。你可以在这里查看或改变属性。你应该注意到自定义类型是受到支持的,只要他们被二进制序列化(请看Basic Serialization)。
     这个工具条包含选择哪些记录事件到事件面板(event pane),当新的窗体已经被创建时以刷新树视图,开始或停止记录事件到事件面板,和清空事件面板等等命令。
     对于图1中显示的对话框,ManagedSpy显示出图2中的信息。对于ManagedSpy,SplitContainer (SplitContainer2)是textBox1的父项,TableLayoutPanel(tableLayoutPanel1)又是的SplitContainer父项。TableLayoutPanel的父是一个TabControl控件,它是也是在另一个SplitContainer中。注意ManagedSpy也告诉我它的BackColor(背景色)也是红色。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值