none
Подтверждение перед закрытием формы RRS feed

  • Вопрос

  • Как сделать запрос подтверждения перед закрытием формы?

    Типа: Вы уверены? ДА НЕТ

    • Перемещено SachinW 1 октября 2010 г. 20:57 MSDN Forums Consolidation (От:Начинающие разработчики)
    17 сентября 2010 г. 8:44

Ответы

  • Событие FormClosing обрабатываешь, а там у параметра "e" свойству e.Cancel присваиваешь True (для отмены закрытия) или False (для закрытия) в зависимости от условия с вопросом Да-Нет.

    Если на VB.Net то так:

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

      e.Cancel = If(MsgBox("Вы уверены?", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok, False, True)

    End Sub

     

    Это ежели дот.нет использовать, а то может нужно через оконные сообщения с помощью переопределения WndMsg, то тогда справку про сообщение WM_SYSCOMMAND почитай.

    • Предложено в качестве ответа a.lisov 18 сентября 2010 г. 0:43
    • Помечено в качестве ответа CheeGer 20 сентября 2010 г. 12:37
    17 сентября 2010 г. 11:35
  • Добавьте обработчик события, которое происходит при закрытии формы:

     

      /// <summary>
      /// Действия при закрытии приложения.
      /// </summary>
      private void ProgramClosing(object sender, System.ComponentModel.CancelEventArgs e)
      {
       if (MessageBox.Show("Do you want close application?", "Question", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
       {
        // Тут можно что то сделать, если пользователь действительно решил закрыть приложение
       }
       else e.Cancel = true;
      }
    

     


    E-mail: Svatoslav.Pankratov@gmail.com
    • Помечено в качестве ответа CheeGer 20 сентября 2010 г. 12:38
    18 сентября 2010 г. 10:26

Все ответы

  • Событие FormClosing обрабатываешь, а там у параметра "e" свойству e.Cancel присваиваешь True (для отмены закрытия) или False (для закрытия) в зависимости от условия с вопросом Да-Нет.

    Если на VB.Net то так:

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

      e.Cancel = If(MsgBox("Вы уверены?", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok, False, True)

    End Sub

     

    Это ежели дот.нет использовать, а то может нужно через оконные сообщения с помощью переопределения WndMsg, то тогда справку про сообщение WM_SYSCOMMAND почитай.

    • Предложено в качестве ответа a.lisov 18 сентября 2010 г. 0:43
    • Помечено в качестве ответа CheeGer 20 сентября 2010 г. 12:37
    17 сентября 2010 г. 11:35
  • Добавьте обработчик события, которое происходит при закрытии формы:

     

      /// <summary>
      /// Действия при закрытии приложения.
      /// </summary>
      private void ProgramClosing(object sender, System.ComponentModel.CancelEventArgs e)
      {
       if (MessageBox.Show("Do you want close application?", "Question", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
       {
        // Тут можно что то сделать, если пользователь действительно решил закрыть приложение
       }
       else e.Cancel = true;
      }
    

     


    E-mail: Svatoslav.Pankratov@gmail.com
    • Помечено в качестве ответа CheeGer 20 сентября 2010 г. 12:38
    18 сентября 2010 г. 10:26
  • Спасибо.. с обработчиком разобрался.. вот только почему то у меня в Windows.Forms нет ни  MessageBoxButton, ни MessageBoxResult.. может ещё какая ссылка нужна?
      
    • Предложено в качестве ответа Coma White 7 декабря 2012 г. 16:27
    19 сентября 2010 г. 23:01
  • О_о А можно узнать какой тип приложения у Вас? Так-то должно все быть, но помню, что в первом своем WPF-приложении я не с первого раза это нашел.
    E-mail: Svatoslav.Pankratov@gmail.com
    20 сентября 2010 г. 6:47
  • Пишу под WM(SmartDeviceProject).. а там как и в простом WindowsFormsApplication.. MessageBox.Show вроде работает, если заменить MessageBoxButton на MessageBoxButtons.. а вот как получить ответ пользователя непонятно.. MessageBoxResult там и не пахнет...
    А в WPF у меня тоже и так работает...
    20 сентября 2010 г. 12:18
  • Нашел.. он там называется DialogResult... 
    20 сентября 2010 г. 12:37