VB.NET-Ctrl+;中断暂停“上的代码”;“部分类frmMain”;

VB.NET-Ctrl+;中断暂停“上的代码”;“部分类frmMain”;,vb.net,ide,windows-forms-designer,Vb.net,Ide,Windows Forms Designer,这是Visual Basic 2008 Express Edition的IDE问题。这可能是IDE中的一个bug,也可能是我的错 我的主窗体名为frmMain,在应用程序的属性中,我将frmMain设置为启动对象。所有这些似乎都是许多软件工程师所做的 但是在调试时,我按了Ctrl+Break,就像我多年来所做的那样,我在IDE中得到了一个我没有预料到的行为。执行此操作后,我得到绿色背景文本和绿色箭头,在工具提示中指示: 这是该线程从当前函数返回时要执行的下一条语句 即使我没有打开designer

这是Visual Basic 2008 Express Edition的IDE问题。这可能是IDE中的一个bug,也可能是我的错

我的主窗体名为
frmMain
,在应用程序的属性中,我将
frmMain
设置为启动对象。所有这些似乎都是许多软件工程师所做的

但是在调试时,我按了Ctrl+Break,就像我多年来所做的那样,我在IDE中得到了一个我没有预料到的行为。执行此操作后,我得到绿色背景文本和绿色箭头,在工具提示中指示:

这是该线程从当前函数返回时要执行的下一条语句

即使我没有打开designer文档,它也会在编辑器中自动打开
frmMain.designer.vb
,并以绿色显示hihglights行。这一行当然是:
部分类frmMain
,这是文件的第2行。(是的,它突出显示了设计器生成的代码的第二行。)

frmMain
似乎已完全加载,它是我的启动对象。据我所知,根本不应该有“下一个要执行的语句”,因为代码应该是空闲的。我不想看到
Designer.vb
文档。。。我想编辑我自己的代码

这是什么原因造成的?尽管我的表单表现得很好,但加载表单时是否存在未完成的方面,使其无法从函数“返回”


我猜它是在试图向您展示:

Application.Run(new frmMain)

这是为启动表单而生成的代码。但是在VB.NET中,这段代码被隐藏了起来。创建一个
Main()。您将看到它突出显示
应用程序。运行
。这就是包含Windows消息泵循环的方法。

Visual Basic编译器将在表单中添加入口点。入口点是标准的main函数或“sharedsub-main”,它又包含代码“application.run(newform)”。由于这是编译器生成的代码,因此没有源位置,因此Visual Basic编辑器将突出显示类定义

这方面的线索在调用堆栈中。请注意
Main()


我自己找到了答案:

我选中了解决方案属性中的“启用应用程序框架”复选框,一切正常! 我相信这个问题是在我编写实验性代码时出现的,在这些代码中,我希望将Sub-Main作为我的启动对象。我已经清除了复选框,因为这样做是使用Sub-Main所必需的

当实验没有成功时,我将启动对象重置为frmMain,我的应用程序运行良好。但是,我没有重新选中该框。我有好几天没有注意到IDE行为的变化(当我需要更标准的行为时),所以我没有观察到任何相关性

虽然勾选该框绝对是解决方案,但我仍然不清楚该框到底是做什么的,只是会导致我在StackOverflow.com上花费大量时间!;-)

对于遇到类似情况的其他人,我现在非常确信我的设置没有损坏,如果您使用的是Express edition,请不要被MS文档误导,这可能会让您相信这是“仅我的代码”选项。在Express版本中无法更改此选项。(但这并不是因为你不能打开它——而是因为你不能在Express中关闭它!)


谢谢大家的努力。

好了,现在开始有意思了。我以为我在这里找到了解决方案:但我错了,因为我的IDE没有提供“调试器节点”,这样我就可以按照Microsoft的建议打开“仅我的代码”。微软说它在那里,但事实并非如此。我展示的节点是环境、项目和解决方案、文本编辑器、数据库工具和Windows窗体设计器。。。没有“调试器节点”,所以我无法按照他们的指示操作。这里肯定有点不对劲,别让我们猜。发布一个代码片段,在绿线周围有几行代码。并发布堆栈跟踪。在选项窗体的左下角有一个名为“显示所有设置”的复选框。确保选中该选项,然后您将看到调试器节点。致Hans和Mark:请注意,我已在原始问题中添加了屏幕截图。此时将显示堆栈跟踪,并且确实选中了“显示所有设置”。我已经读过VB Express 2008中没有调试器节点,但它仍然没有阐明“仅我的代码”选项是如何被禁用的,以及如何重新启用它。对AMissico和tcarvin说:真的,我明白了。但这不是VB.Net的正常行为。经过一些研究,在我的特定IDE安装中,“仅我的代码”选项似乎已被禁用。它在VB.Net中默认启用。(这是我喜欢的。我发现它非常方便,因为我可以在中断模式下编辑代码,在不重新启动的情况下尝试不同的代码片段,并且代码不会跳转到不相关的行。)不幸的是,Express edition的UI没有提供重新启用它的方法。所以我的两个问题是:“只是我的代码”是如何关闭的?以及如何在2008 Express edition中重新启用它?默认情况下,“仅我的代码”处于启用状态,与语言无关。您的Visual Studio设置可能已损坏。尝试重置。如果无法通过UI使用,则可以使用命令行执行此操作。这是设置启动窗体时VB.NET和Windows窗体应用程序的正常行为。WPF对VB.NET和C#都做了类似的事情。正如tcarvin提到的,Windows窗体需要一个“Windows消息泵”,它是通过
应用程序创建的。运行
时,所有应用程序都必须有一个主入口点。>>但我错了,因为我的IDE没有提供“调试器节点”,所以我可以按照Microsoft的建议打开“仅我的代码”。微软说
Shared Sub Main()
    Application.Run(new frmMain)
End Sub