2013-12-07 2 views
1

Я хочу спросить, как я могу заставить новую форму работать как альтернативу диалоговому окну окна сообщений, чтобы предотвратить закрытие формы в VB.NET?Как форма работает как альтернатива сообщению, чтобы предотвратить закрытие формы в VB.NET?

Ну, я создаю новую форму, которая при нажатии кнопки [X] будет всплывать и подтверждать, действительно ли пользователь хочет выйти из программы.

Форма, которая будет всплывать, если кнопка [X] нажата. Я проектирую аналогично диалоговому окну сообщений. Да/Нет. Я использовал два окна изображения как «Да» и «Нет» моей формы.

Я использовал этот код в да и нет окна изображения в форме, которая будет всплывающее окно:

Private Sub picxyes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picxyes.Click 

     Main.Close() 
     about.Close() 
     Me.Close() 

    End Sub 

Private Sub picxno_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picxno.Click 
     Me.Close() 

И это в форме события закрытия:

e.Cancel = true 
exitgame.Show() 

'exitgame is the name of the form that will popup when [x] is click. 

Я также пытаюсь добавить е .Cancel = False под Private Sub picxyes_Click, но он говорит об ошибке.

Мне нужно знать, как я мог использовать этот ящик для изображений (picxyes и picxno), когда клик picxyes щелкнул, e.Cancel должен быть превращен в false, а вся форма должна закрываться, иначе, когда picxno щелкнет, только exitgame форма закрывается? Пожалуйста, поделитесь идеями, которые могут помочь в этом. Спасибо.

+0

дизайн вашей формы для замены как диалог с return 'DialogResult.xxx' затем оценить, что возврат в основной форме, чтобы решить, закрыть или нет ... MessageBox может сделать то же самое – Plutonix

ответ

1

MessageBox.Show() отображает диалоговое окно . Вы хотите, чтобы создать диалоговое окно, а также:

Private Sub picxyes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picxyes.Click 
    Me.DialogResult = DialogResult.OK 
End Sub 

Private Sub picxno_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picxno.Click 
    Me.DialogResult = DialogResult.Cancel 
End Sub 

Теперь вы можете просто использовать DialogResult, как вы делаете для MessageBox, в вашем FormClosing обработчика событий:

If e.CloseReason = CloseReason.UserClosing Then 
     Using dlg = New ExitGame 
      If dlg.ShowDialog() = DialogResult.OK Then e.Cancel = True 
     End Using 
    End If