Как вызвать subform перед главной формой для vb.net - PullRequest
0 голосов
/ 10 сентября 2018

Мне нужно, чтобы мое приложение сначала запустило эту форму, прежде чем появится основная форма.

Ниже мой код для этого: Application.myapp

<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <MySubMain>true</MySubMain>
  <MainForm>MainForm</MainForm>
  <SingleInstance>false</SingleInstance>
  <ShutdownMode>0</ShutdownMode>
  <EnableVisualStyles>true</EnableVisualStyles>
  <AuthenticationMode>0</AuthenticationMode>
  <SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

Program.vb (где мой метод подчиненной формы) Импорт Лицензионной Формы

Module Program
    Public Sub Main()

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

    End Sub
End Module

Когда я пытался собрать приложение, я получил следующую ошибку: enter image description here

Однако, если я отключаю суб-форму, установив файл приложения

<mySubMain>false</MySubMain>

Строится успешно. Любая идея, что не так и как я должен устранить ее?

1 Ответ

0 голосов
/ 10 сентября 2018

Нет необходимости отключать Application Framework и писать свой собственный метод Main. Просто обработайте событие Startup приложения, к которому вы можете обратиться, нажав кнопку «Просмотр событий приложения» на странице «Приложения» свойств проекта. Вы можете отобразить там модальное диалоговое окно так же, как и в любом другом месте. Если вы установите e.Cancel на True, приложение закроется, не создавая форму запуска.

В качестве примера я просто создал новый проект WinForms и добавил вторую форму. В этой форме я добавил два Buttons, а затем добавил этот код:

Public Class Form2

    Private Sub okButton_Click(sender As Object, e As EventArgs) Handles okButton.Click
        DialogResult = DialogResult.OK
    End Sub

    Private Sub cancelButton_Click(sender As Object, e As EventArgs) Handles cancelButton.Click
        DialogResult = DialogResult.Cancel
    End Sub

End Class

Затем я использовал кнопку в свойствах проекта, о которых я говорил ранее, и добавил этот код:

Imports Microsoft.VisualBasic.ApplicationServices

Namespace My

    ' The following events are available for MyApplication:
    ' Startup: Raised when the application starts, before the startup form is created.
    ' Shutdown: Raised after all application forms are closed.  This event is not raised if the application terminates abnormally.
    ' UnhandledException: Raised if the application encounters an unhandled exception.
    ' StartupNextInstance: Raised when launching a single-instance application and the application is already active. 
    ' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.
    Partial Friend Class MyApplication

        Private Sub MyApplication_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup
            Dim dialogue As New Form2

            e.Cancel = (dialogue.ShowDialog() = DialogResult.Cancel)
        End Sub

    End Class

End Namespace

Когда я запускал проект, сначала отображался Form2, хотя Form1 была формой запуска. Если я нажал кнопку «ОК», то Form2 был отклонен, а Form1 открылся нормально. Если я нажал кнопку «Отмена», приложение завершилось без отображения Form1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...