【问题标题】:Programmatically change the startup form on application launch?以编程方式更改应用程序启动时的启动表单?
【发布时间】:2010-02-16 09:45:20
【问题描述】:

我可以在 VB.Net 中以编程方式更改应用程序启动时的启动表单吗?

【问题讨论】:

    标签: vb.net winforms startup


    【解决方案1】:

    当然可以!

    在您的项目属性中,将 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

    【讨论】:

    • 请注意,对于此选项,您必须将 Windows 窗体应用程序(如果有的话,在这种情况下的大多数情况下)切换到 控制台应用程序。这有很多的后果。对于现有应用程序,这可能是困难且不可行的操作。
    【解决方案2】:

    在 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
    

    【讨论】:

      【解决方案3】:

      这是我使用的方法,它可以像普通应用程序入口点一样有效地启动表单。

      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
      

      【讨论】:

      • 我写给其他此类答案的内容相同。请注意,对于此选项,您必须将 Windows 窗体应用程序(如果有的话,在这种情况下的大多数情况下)切换到 控制台应用程序。这有很多的后果。对于现有应用程序,这可能是困难且不可行的操作。
      • 它用于控制台应用程序或设置为 sub main 的表单应用程序。到目前为止,我还没有发现这种方法的任何后果,文档基本上表明“Application.Run(form)”是基于表单的应用程序的创建方式,他们甚至引用这是正确的方法...... @ 987654323@link
      • 这是真的,我没有用这个特定的代码测试它。我使用了各种设置并使用 GUI 进行设置,包括 Sub Main() 变体。 VS 抛出一个错误并明确告诉我我正在运行一个 Windows 窗体应用程序,并且我必须切换到 控制台应用程序。我还遇到了抑制主窗体的另一个问题,所以我最终只是隐藏它并显示另一个窗体。不过,仅在我的情况下,这可能是明智的。
      【解决方案4】:

      正确的方法是改变项目的MainForm。

      1. 打开 ApplicationsEvents.vb

      2. 在 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
        

      原来如此。

      【讨论】:

        猜你喜欢
        • 2011-03-27
        • 1970-01-01
        • 2016-10-18
        • 2012-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多