【发布时间】:2010-02-16 09:45:20
【问题描述】:
我可以在 VB.Net 中以编程方式更改应用程序启动时的启动表单吗?
【问题讨论】:
我可以在 VB.Net 中以编程方式更改应用程序启动时的启动表单吗?
【问题讨论】:
当然可以!
在您的项目属性中,将 Startup Object 设置为 Sub Main,并确保在您的应用程序的某处有一个 Public Sub Main 方法。单独的启动类可能是个好主意:
Public Class myStartupClass
''' <summary>
''' This is the method that will be run when the application loads,
''' because Project Properties, Startup Object is set to SubMain
''' </summary>
''' <remarks>
''' </remarks>
''' --------------------------------------------------------------------------------
Public Shared Sub Main()
'The form that we will end up showing
Dim formToShow As System.Windows.Forms.Form = Nothing
'The determiner as to which form to show
Dim myMood As String = "Happy"
'Choose the appropriate form
Select Case myMood
Case "Happy"
formToShow = New Form1
Case Else
formToShow = New Form2
End Select
'Show the form, and keep it open until it's explicitly closed.
formToShow.ShowDialog()
End Sub
End Class
【讨论】:
在 VB 2010 Express 下创建的“Windows 窗体应用程序”中,您可以在 ApplicationEvents.vb 中执行以下操作:
Partial Friend Class MyApplication
Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
'Select the form of your choice
My.Application.MainForm = Any_Form_You_like
End Sub
End Class
【讨论】:
这是我使用的方法,它可以像普通应用程序入口点一样有效地启动表单。
Public Sub Main()
Dim value As String = Trim(Environment.CommandLine)
Dim f As Form
Select Case value
Case "a"
f = New frmTextEdit
Case "b"
f = New frmListDialog
Case "c"
f = New frmSuggestion
Case Else
Throw New Exception("Unsupported startup form option")
End Select
Application.Run(f)
End Sub
【讨论】:
Sub Main() 变体。 VS 抛出一个错误并明确告诉我我正在运行一个 Windows 窗体应用程序,并且我必须切换到 控制台应用程序。我还遇到了抑制主窗体的另一个问题,所以我最终只是隐藏它并显示另一个窗体。不过,仅在我的情况下,这可能是明智的。
正确的方法是改变项目的MainForm。
打开 ApplicationsEvents.vb
在 ApplicationStart.vb 中使用:
Private Sub MyApplication_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup
Dim formToShow As System.Windows.Forms.Form = Nothing
Dim AM_PM as String = "AM"
Select Case
Case "AM"
Me.MainForm = frmBefore
Case "PM"
Me.MainForm = frmAfter
End Select
MainForm.Show()
End Sub
原来如此。
【讨论】: