Я рискую в подавание моей заявки VB.NET немного лучше для использования путем создания некоторых форм немодальными.
Я думаю, что выяснил, как использовать dlg. Покажите () и dlg. Скройтесь () вместо того, чтобы назвать dlg. ShowDialog (). У меня есть экземпляр моего немодального диалогового окна в моей форме главного приложения:
Public theModelessDialog As New dlgModeless
Для разжигания немодального диалогового окна, я звоню
theModelessDialog.Show()
и в OK и обработчиках Кнопок отмены в dlgModeless
Я имею
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Hide()
End Sub
Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Hide()
End Sub
и это, кажется, хорошо работает.
Кнопка "X" в верхнем правом углу получает меня, все же. Когда я закрываю форму с той кнопкой, затем попытайтесь вновь открыть форму, я добираюсь
ObjectDisposedException был не обработан. Не может получить доступ к склонному объекту.
Я чувствую, что я - большая часть пути там, но я не могу выяснить, как сделать любое из следующего:
Какие-либо идеи?
Класс этого диалогового окна System.Windows.Forms.Form
.
Используйте Me.Close ()
, чтобы скрыть форму. Чтобы открыть его, используйте следующий фрагмент:
If theModelessDialog.IsDisposed Then
theModelessDialog = New dlgModeless
End If
dlgModeless.Show()
Если это сохранение данных, вам нужно придумать какой-нибудь способ их сохранения (возможно, в статической переменной / s в форме). Однако это правильный способ делать то, чего вы пытаетесь достичь.
Вы также должны простить меня, если мой VB отключен, это было давно.
Перехватите событие FormClosing и, если причина в UserClosing, установите для параметра Cancel для события значение true.
Примерно так:
Private Sub Form1_FormClosing(sender as Object, e as FormClosingEventArgs) _
Handles Form1.FormClosing
if e.CloseReason = CloseReason.UserClosing then
e.Cancel = true
Me.Hide()
end if
End Sub
Согласен с обработкой события FormClosing. Или измените свойства формы, чтобы скрыть элемент управления System X.