У меня есть приложение в vb.net, который запускается с функции sub, делают некоторые вещи и решают, показывает ли это себя или нет. Когда это показывает себя, это делает так путем вызова dialog.ShowDialog()
.
Когда dialog.ShowDialog()
возвраты, приложение делает некоторую очистку и концы.
Я хотел бы найти способ временно скрыться, диалоговое окно (отправьте его в системный лоток), не возвращая из ShowDialog () функцию. Однако, как только я делаю a me.Hide()
в коде формы эффективно скрыта форма, но ShowDialog () функциональные возвраты и процесс закрывается.
Я понимаю, что это - ожидаемое поведение. Таким образом, мой вопрос состоит в том, как я могу получить этот эффект? Это - запуск диалоговое окно, которое может быть скрыто, и блок, пока пользователь действительно не хочет выйти из приложения.
Вы не можете заставить эту работу работать, ShowDialog () всегда будет возвращать, когда форма скрыта. Хитрость заключается в том, чтобы использовать обычную форму и обычный вызов Application.Run (), но не дать ему сразу стать видимым. Вставьте этот код в свой класс формы:
Protected Overrides Sub SetVisibleCore(ByVal value As Boolean)
If Not IsHandleCreated Then
CreateHandle()
value = false
End If
MyBase.SetVisibleCore(value)
End Sub
Помните, что ваш обработчик события Load не будет работать, пока форма не станет видимой, поэтому обязательно выполните любую инициализацию в конструкторе Sub New.
Если вы скроете диалоговое окно, вы вернетесь из ShowDialog (). Забудьте о попытках изменить это, вы не можете.
Возможно, вам удастся свернуть диалоговое окно.
form1.WindowState = FormWindowState.Minimized;
Или вы можете разместить его за пределами экрана.
form.Left = -16384;
Или вы можете сделать его прозрачным Изменение непрозрачности любого окна из C #