Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Visual Studio中调试期间在WPF/C中查找当前订阅事件的所有方法_C#_Wpf_Debugging_Visual Studio Debugging - Fatal编程技术网

C# 如何在Visual Studio中调试期间在WPF/C中查找当前订阅事件的所有方法

C# 如何在Visual Studio中调试期间在WPF/C中查找当前订阅事件的所有方法,c#,wpf,debugging,visual-studio-debugging,C#,Wpf,Debugging,Visual Studio Debugging,我对WPF和C都很陌生,现在我继承了一个C/WPF应用程序,它有超过60k行代码(没有使用MVVM,设计模式相当即兴)。现在,我必须更改UI中的一个相当小的东西,但是这个控件非常关键,因此它被大量地编织到整个解决方案中。我知道VisualStudio中的“Live Visual Tree”功能,也知道Live Property Explorer。但是,我希望有一个类似于“Live EVENT Explorer”的东西来查看向该控件的事件注册了哪些方法。我想要一些类似于: a) 可以查看当前订阅某

我对WPF和C都很陌生,现在我继承了一个C/WPF应用程序,它有超过60k行代码(没有使用MVVM,设计模式相当即兴)。现在,我必须更改UI中的一个相当小的东西,但是这个控件非常关键,因此它被大量地编织到整个解决方案中。我知道VisualStudio中的“Live Visual Tree”功能,也知道Live Property Explorer。但是,我希望有一个类似于“Live EVENT Explorer”的东西来查看向该控件的事件注册了哪些方法。我想要一些类似于:

a) 可以查看当前订阅某个事件的方法(例如ListView的SelectionChanged事件)。对于“当前”,我的意思是,根据选择的单选按钮和复选框等,订阅的方法正在发生很大的变化。因此,我想进行所有需要的选择,然后检查控件,查看订阅的方法是什么

b) 例如,如果我更改控件中的选择,可能会在由该事件触发的第一个方法中向右停止。这样我就可以单步执行下面的代码了


你们有没有人知道在VisualStudio中使用内置函数是否可以实现这两种方法中的任何一种,以及如何做到这一点?或者是否有其他工具可以实现类似的功能?

在大多数情况下,查找所有引用都应该包含它,但当事件不够独特时,此操作将失败(想象按钮。单击)

您可以通过浏览事件对象并检查
\u invocationList
字段,在调试器中访问此项。如果未填充此字段,请查看
\u methodPtr
字段。如果两个字段都为空,则没有人订阅

\u target
是包含订阅方法的对象。如果为null,则订阅一个静态方法(进行标识)。否则,您可以使用目标对象的名称来查找订阅的方法

在VisualStudio中,调试工具提示使这变得简单。对于单播委托,将鼠标悬停在事件上会显示声明的类型和方法名称(以及arity,如果需要):

对于多播,调用列表将接管:


你在使用MVVM吗?好问题。这是我应该提到的。没有使用MVVM。设计模式相当“即兴”。另外,写了大部分内容的同事已经不在公司了。请参阅和。此问题有任何更新吗?你解决这个问题了吗?下面的答案是否解决了您的问题?经过一些测试,Mitch的答案最适合我的问题,但Nekeniehl的答案也是很好的(即结合#IF Debug preprocessor指令),这取决于具体情况。另外,他对Snoop工具的评论(总体上)对我帮助很大。有了所有的答案和评论,我找到了一种目前适合我的工作方式。但最初我希望有一种工具可以让我检查WPF控件并查看订阅事件的所有方法,类似于Live Property viewer。但这样的工具似乎还不存在。