VB.NET - Ctrl + Break暂停“Partial Class frmMain”上的代码

时间:2012-02-01 11:30:14

标签: vb.net ide windows-forms-designer

这是Visual Basic 2008 Express Edition的IDE问题。它可能是IDE中的一个错误,或者可能是我的错?

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

但是在调试时我点击 Ctrl + Break ,正如我多年来所做的那样,我在IDE中得到了一个我没想到的行为。这样做后,我会在工具提示中显示绿色背景文本和绿色箭头:

  

当此线程从当前函数返回时,这是要执行的下一个语句。

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

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

造成这种情况的原因是什么?即使我的表单表现得很好,但是在某种程度上,加载表单是否会导致表单“未返回”而未完成?

Enter image description here Enter image description here Enter image description here

3 个答案:

答案 0 :(得分:0)

我猜它会试图告诉你相当于:

Application.Run(new frmMain)

这是为启动表单而生成的代码。但是在VB.NET中这个代码被埋没了。创建一个Main()函数,并将启动类型更改为包含此行的启动类型,然后重复此过程。你会看到它突出显示Application.Run。这是包含Windows消息泵循环的方法。

答案 1 :(得分:0)

Visual Basic编译器将在表单中添加一个入口点。入口点是标准主函数或“共享子主”,后者又包含代码“application.run(new form)”。由于这是编译器生成的代码,因此没有源位置,因此Visual Basic编辑器会突出显示类定义。

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

Shared Sub Main()
    Application.Run(new frmMain)
End Sub

答案 2 :(得分:0)

我自己找到了答案:

我检查了解决方案属性中的“启用应用程序框架”复选框,一切顺利!

我相信这个问题出现在我正在研究实验代码时,我希望将Sub Main作为我的启动对象。我已经清除了复选框,因为这样做是必要的,以便使用Sub Main。

当实验没有完成时我将启动对象重置回frmMain,我的应用程序工作正常。但是我没有重新检查这个盒子。我好几天都没有注意到IDE行为的变化(当我需要更标准的行为时),所以我没有观察到任何相关性。

虽然检查那个盒子绝对是解决方案,但我仍然不太清楚这个盒子实际上做了什么,除了让我花费大量时间在StackOverflow.com上! ; - )

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

感谢大家的努力。