0

如果我有一个项目,但我不知道设计如何与代码对应?

4

3 回答 3

10

您可以调用 来System.Diagnostics.Debugger.Break()告诉任何附加的调试器在该行中断。

如果没有附加,Windows 将尝试启动任何已注册的调试器。如果未注册,您将收到应用程序的异常/崩溃。所以,不要把它留在生产代码中:)

例如(根据 icemanind 的评论)

#if DEBUG
    Debugger.Break();
#endif 

如果您想在单击任何按钮时中断,它会变得有点棘手。最简单的事情是编写一个Button包装类并覆盖OnClick并将您的 Break 调用放在那里。例如:

public class ButtonWedge : Button
{
    protected override void OnClick(System.EventArgs e)
    {
        Debugger.Break();
        base.OnClick(e);
    }
}

添加该类后,您可以将其拖放到设计图面上。但是,如果您已经有了代码,则可以编辑 Designer.cs 文件并替换System.Windows.Forms.ButtonButtonWedge.

进入后OnClick,您可以Click通过使用键查看基类Events数组来查看事件的去向Control.EventClick。这将包含一个多播委托,您可以查看MethodTarget属性以找出订阅此Click事件的内容。换句话说,运行时点击处理程序的名称将是:

string handlerName = base.Events[Control.EventClick].Target.GetType().FullName + '.'
   + base.Events[Control.EventClick].Method.Name;

它并没有真正在特定Click事件中设置断点,而是让您知道发生了什么以及在哪里......

于 2012-09-19T17:36:24.250 回答
1

为什么你不能在设计模式下双击按钮。它在处理点击事件的函数上的代码中打开。

于 2012-09-19T18:58:11.540 回答
1

如果您的意思是项目中程序上的按钮,请使用彼得的答案。如果您问是否可以在键盘或鼠标上制作一个按钮导致执行中断或暂停,您可以按 Ctrl+Alt+Pause。

于 2012-09-19T17:44:09.483 回答