Не открывайте форму при передаче аргументов - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть типичная форма со списками, текстовыми полями, кнопками и так далее. Эта форма по существу загружает файлы конфигурации (.cfg) и заполняет объекты. Затем пользователь может «сгенерировать» отчет на основе содержимого (из файла), которое теперь находится в объектах.

Однако - я хочу, чтобы пользователь мог использовать параметры командной строки для загрузки файла .cfg и создать отчет. Предостережение заключается в том, что было бы проще по-прежнему загружать объекты на экране (чтобы мне не нужно было создавать больше кода для генерации отчета.

Для этого до сих пор я создал этот код:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
  If my.Application.CommandLineArgs.count > 0 then
    me.Hide()
    with my.Application
      'Load the specific file
      LoadCfgFile(.CommandLineArgs(0))

      'GenerateReport
      GenerateCSVReport()

      'Exit Application
      application.Exit()
    end with
 End If
End Sub

Проблема в том, что форма появляется на долю секунды при создании отчета, и я бы предпочел, чтобы он никогда не показывался вообще при работе с параметрами.

1 Ответ

1 голос
/ 06 апреля 2020

Надлежащее место для этого - обработчик событий Startup приложения, а не форма запуска.

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
            If e.CommandLine.Count > 0 Then
                'Do whatever here.
                '...

                'Exit without creating the startup form.
                e.Cancel = True
            End If
        End Sub

    End Class
End Namespace

Вы можете получить доступ к этому файлу кода из Приложения страница свойств проекта.

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