Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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
如何在VB.Net winforms应用程序中查找main()入口点?_.net_Vb.net_Winforms - Fatal编程技术网

如何在VB.Net winforms应用程序中查找main()入口点?

如何在VB.Net winforms应用程序中查找main()入口点?,.net,vb.net,winforms,.net,Vb.net,Winforms,当我在C中创建WinForms应用程序时,输出类型是Windows应用程序,我得到一个带有静态void Main的program.cs,我可以用它来处理命令行参数等 然而,当我为VB创建一个等效的项目时,应用程序类型是Windows窗体应用程序,我不得不选择一个启动窗体 在我决定在VB.Net中显示哪个表单之前,是否有一种等效的机制来运行我自己的代码?我假设同样的代码存在,但是自动生成并隐藏在某个地方?如果是这样,在哪里?在VB中,您需要手动创建sub-main,因为我通常会创建一个名为Prog

当我在C中创建WinForms应用程序时,输出类型是Windows应用程序,我得到一个带有静态void Main的program.cs,我可以用它来处理命令行参数等

然而,当我为VB创建一个等效的项目时,应用程序类型是Windows窗体应用程序,我不得不选择一个启动窗体


在我决定在VB.Net中显示哪个表单之前,是否有一种等效的机制来运行我自己的代码?我假设同样的代码存在,但是自动生成并隐藏在某个地方?如果是这样,在哪里?

在VB中,您需要手动创建sub-main,因为我通常会创建一个名为Program的新模块

作为一个非常基本的设置,您需要添加以下代码

Public Sub Main()

    Application.EnableVisualStyles()
    Application.SetCompatibleTextRenderingDefault(False)
    Application.Run(New Form1)

End Sub
完成后,转到项目设置的“应用程序”选项卡,取消选中“启用应用程序框架”设置,然后从“启动对象”下的下拉列表中选择新的子主程序

然后,您可以在程序打开主窗体之前,将要运行的任何启动代码放在Application.run行之前

希望这对您有所帮助

如果您的应用程序只有一个表单,您只需开始键入Sub New,Visual Studio将自动生成这个首先执行的方法存根。不需要更改项目设置

Public Sub New()
    MyBase.New()

    'This call is required by the Windows Form Designer.
    InitializeComponent()

    'Add any initialization after the InitializeComponent() call
    '==> Put your pre-execution steps here.
End Sub

可能的重复讨论了为什么应该做或不做,它没有说如何做…@Basic你让它与参数一起工作了吗?我使用答案中提到的步骤。但当我试图从cmd传递参数时,它不起作用。我将Main作为Public Sub Main ByVal args作为字符串,然后在for each中打印数组的每个元素。。。使用Console.WriteLine…我从cmd运行应用程序,但不打印我传递的参数。有什么帮助吗please@omachu23这对我来说很好,所以你一定是做错了什么。我也在C语言中呆了很长时间,VB.Net语法有点生疏。这不应该是ByVal args作为字符串吗?注意:括号已移动。解决这个问题最简单的方法是使用右上角的按钮,然后问一个问题,这样更多的人就可以专注于这个问题it@Basic我真不敢相信我错过了!我改变了,它现在可以工作了!非常感谢您抽出时间回答!!欢呼这不是问题,这与启动表单有关,他希望代码能够在启动表单之前运行。接受的答案是正确的。@MarkHall是正确的。注意应用程序的初始入口点Sub-Main和表单的新构造函数Sub-New之间的区别。前者是在启动任何其他操作之前执行的,没有表单、消息泵等,允许您处理命令行参数、选择视觉样式和类似的操作是的,我不知道最初的问题是处理多个表单。我编辑了上面的回复,以澄清Sub New仅在应用程序具有单个表单时提供初始化前访问。谢谢你的评论。很好的解决方案。如果使用这种方法,还需要重新实现模块中的任何应用程序事件,如Application.ApplicationExit和Application.ThreadException等。可以在使用MyApplication\u启动事件加载任何表单之前运行代码。有关更多信息,请参阅。这避免了必须实现Sub-Main。