закрытие окна через строку "меню"

Тема в разделе "Visual Basic", создана пользователем Alex77777, 22 май 2007.

Статус темы:
Закрыта.
  1. Alex77777

    Alex77777 Гость

    при нажатии на крестик закрытия окна этот код работает
    Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Dim kAs Integer
    k = MsgBox("Вы хотите выйти из программы?", _
    vbQuestion + vbOKCancel + vbDefaultButton2, "сообщение")

    If k = vbOK Then
    Dim z As Integer
    z = MsgBox("Подтвердите выход", _
    vbExclamation + vbYesNo + vbDefaultButton2, "сообщение")
    If z = vbYes Then
    Else
    Cancel = 1
    End If
    Else
    Cancel = 1
    End If
    End Sub

    когда в строке меню выбираю соответствующую позицию "Exit" и пишу вот такой код

    Dim kAs Integer
    k = MsgBox("Вы хотите выйти из программы?", _
    vbQuestion + vbOKCancel + vbDefaultButton2, "Системное сообщение")

    If k = vbOK Then
    Dim z As Integer
    z = MsgBox("Подтвердите выход", _
    vbExclamation + vbYesNo + vbDefaultButton2, "Системное сообщение")
    If z = vbYes Then
    Unload Me
    End If
    End If

    о при нажатии позиции "Exit" появляется первое сообщение "Вы хотите выйти из программы?", далее при нажатии vbOK появляется сообщение "Подтвердите выход", потом когда нажимаю vbYes (должна выгрузиться форма, но этого не происходит) снова появляется сообщение "Вы хотите выйти из программы?" я опять нажимаю vbOK, затем опять появляется сообщение "Подтвердите выход", и только затем нажав снова vbYes форма выгружается.
    т.е. у меня почему то каждое сообщение повторяется дважды, а мне нужно только по одному разу с последующим закрытием формы. получается, что Unload Me срабатывает только со второго раза.

    коллеги по работе посоветовали использовать оператор GoTo, но с ним такая же "петрушка".

    кто знает подскажите что у меня неправильно в коде.
     
  2. Tanya

    Tanya Гость

    Все очень просто

    Событие MDIForm_QueryUnload возникает каждый раз когда в программе пишется Unload Form1
    или Unload Me, нажимается на крестик (Закрытие окна) в общем при выгрузке формы.

    У тебя: сначала нажимаем Exit - следует обработка события меню,
    где ты спрашиваешь "Вы хотите выйти из программы?"
    отвечаем Yes и Yes на следующий вопрос
    и переходим к Unload Me, который вызывает событие MDIForm_QueryUnload
    и вопросы повторяются вновь но уже из обработчика MDIForm_QueryUnload

    Выход следующий: в обработчике меню пишешь только Unload Me
     
  3. Alex77777

    Alex77777 Гость

    Огромное спасибо ! ! !
    а ведь хотел методом "тыка" написать просто Unload Me, но я думал, что форма выгрузится без всяких сообщений. А оказывается все работает как и при нажатии на крестик закрытия формы.
    Теперь все работает как и хотелось :blink:
     
Загрузка...
Похожие Темы - закрытие окна через
  1. YGol
    Ответов:
    5
    Просмотров:
    1.248
  2. Баламут
    Ответов:
    2
    Просмотров:
    3.265
  3. k85
    Ответов:
    12
    Просмотров:
    894
  4. orion
    Ответов:
    8
    Просмотров:
    1.674
  5. azzza
    Ответов:
    3
    Просмотров:
    2.549
Статус темы:
Закрыта.

Поделиться этой страницей