#vb.net #visual-studio-2017
#vb.net #visual-studio-2017
Вопрос:
Я пытался создать программу, которая будет воспроизводить звук запуска (потому что Microsoft, по-видимому, ненавидит их сейчас), и для этого требуется, чтобы форма была полностью скрыта при запуске программы, так что это просто звук, но мне также нужно получить доступ к форме, чтобы изменить настройки, когда мне нужно, чтобыуспешно скрыть форму, которую я использую этот код:
Protected Overrides Sub SetVisibleCore(ByVal value As Boolean)
If Not Me.IsHandleCreated Then
Me.CreateHandle()
value = False
End If
MyBase.SetVisibleCore(value)
End Sub
Который, насколько я понимаю, переопределяет запуск в классе приложения и предотвращает запуск формы запуска, но я сделал так, чтобы он воспроизводил звук только в том случае, если -t
аргумент передается через ярлык, поэтому я могу получить доступ к основной форме, чтобы легче изменять настройки, когда мне нужно, вот чтополный код выглядит так, чтобы вы могли лучше понять, о чем я говорю
Protected Overrides Sub SetVisibleCore(ByVal value As Boolean)
If Not Me.IsHandleCreated Then
Me.CreateHandle()
value = False
End If
MyBase.SetVisibleCore(value)
Dim clArgs() As String = Environment.GetCommandLineArgs()
If clArgs.Count() = 2 Then
For i As Integer = 1 To 1 Step 1
If clArgs(i) = "-t" Then
Try
My.Computer.Audio.Play(My.Settings.startSound, AudioPlayMode.Background)
Catch ex As Exception
End Try
Else
Me.Show()
End If
Next
End If
End Sub
Итак, чтобы подвести итог тому, что здесь происходит, он начнет с проверки наличия -t
переданного аргумента, CommandLineArgs
и если он есть, он будет воспроизводить звук, фактически не запуская форму, но если его нет, он запустит форму, но по какой-то причине, если у меня есть Me.show()
в кодеэто вызовет переполнение стека, и я понятия не имею, почему это происходит, кроме того, что этот код, скрывающий форму, является причиной этого
Комментарии:
1. Вы имеете в виду, что вы получаете переполнение стека только при
Me.Show()
выполнении? ЭквивалентноMe.Show()
заданному.Visible = True
в форме ( ссылка здесь ), есть ли вообще какой-либо случай, когда вы можете успешно отобразить форму?2. Есть ли причина не использовать приложение VB. Событие запуска или отключение среды приложения VB и написание собственного
Sub Main
для обработки аргументов командной строки?