Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вместо закрытия формы надо ее скрыть, Есть проблемы с завершением работы Винды 
V
    Опции темы
Doff
Дата 6.2.2008, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



Здравствуйте. Имеется задача - вместо закрытия окна (по нажатию на кнопку на заголовке или по Alt+F4) необходимо скрыть форму. Попробовал вот такой код
Код

Private Sub Form1_FormClosing(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Dim Cancel As Boolean = eventArgs.Cancel
        Dim UnloadMode As System.Windows.Forms.CloseReason = eventArgs.CloseReason
        Cancel = True
        eventArgs.Cancel = Cancel
        funcHide
End Sub

funcHide - функция, вызывающая me.hide и еще несколько действий.
Если честно, то приведенный выше код я содрал из какой-то статьи по VB5 и абсолютно не понимаю, как он работает.
Проблема в том, что если программа с таким окном запущена, а Windows должна завершить свою работу, то практически все другие процессы закрываются, а прога с такой формой не хочет закрываться и Винде не удается выключить компьютер. Приходится вызывать Диспетчер задач и вручную убивать эту программу.
В пространстве имен eventArgs.CloseReason есть много чего интересного, но что и как мне надо делать, я не знаю. Мне всего лишь нужно, чтобы форма вместо закрытия просто изчезала с экрана.
Спасибо за внимание.


PM   Вверх
thomas
Дата 7.2.2008, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 3
Всего: 65



Doff
Приветствую.
Простите за нескромность. А у вас как с логикой, а? 

Приводите код, который вместо закрытия формы(приложения) скрывает её. А потом жалуетесь
Цитата

Проблема в том, что если программа с таким окном запущена, а Windows должна завершить свою работу, то практически все другие процессы закрываются, а прога с такой формой не хочет закрываться и Винде не удается выключить компьютер.

А потом повторяете 
Цитата

Мне всего лишь нужно, чтобы форма вместо закрытия просто изчезала с экрана.

 smile 
Она таки исчезает с экрана, но продолжает "работать". Потому как вы приложение не закрыли, а скрыли. И естественно винда не может завершить работу не убив процесс этой самой формы. А так как она скрыта, то визуально не наблюдается и мышкой приложение не закрывается.
И что бы выключить компютер, надо сначала закрыть ВСЕ приложения, а потом выходить из винды.


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Doff
Дата 7.2.2008, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



С логикой у меня все нормально smile . Винда при завершении работы должна закрывать самостоятельно запущенные процессы. Она передает "требование" завершить работу программы, ждет определенные количество времени и, если процесс не завершен, убивает его сама. Уж не думаете ли вы, что перед выключением компьютера надо вручную завершать все процессы?
Цитата(thomas @  7.2.2008,  01:23 Найти цитируемый пост)
И что бы выключить компютер, надо сначала закрыть ВСЕ приложения, а потом выходить из винды.

Вот-вот. Винда просит мою прогу, чтобы она завершила свою работу, а главное окно Form_1 вместо закрытия сворачивается, отсюда результат - процесс не завершается. Винда ждет определенное кол-во времени, опять посылает запрос на закрытие, все повторяется снова. И так до бесконечности. Она просто тупо не догадывается завершить этот процесс каким-либо другим способом.
Правда, есть исключение - можно подправить один ключ в реестре и Винда будет принудительно завершать все процессы, без всяких этих "не хочюю, лучше спрячусь". Но не у каждого же имеется такая настройка.
Отсюда и мой вопрос:
Цитата

вместо закрытия окна (по нажатию на кнопку на заголовке или по Alt+F4) необходимо скрыть форму

Чтобы форма не пыталась скрыться при просьбе Windows закрыться. Вот я и не знаю, как различить - либо это юзер щелкает по кнопке заголовка, либо это процедура завершения работы Windows.

Это сообщение отредактировал(а) Doff - 7.2.2008, 12:04
PM   Вверх
Piphon
  Дата 8.2.2008, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 30.3.2004
Где: Екатеринбург

Репутация: нет
Всего: 2



А за чем тогда нам свойство CloseReason у FormClosingEventArgs? 
Проверяем причину по которой форма закрывается, и если её закрывает пользователь то делаем то что нам надо 

Код

     Private Sub Form1_FormClosing(ByVal sender As Object, ByVal eventArgs As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If eventArgs.CloseReason = CloseReason.UserClosing Then
            funcHide()
            eventArgs.Cancel = True
        End If
    End Sub

--------------------
Non Progredi Est Regredi...
PM MAIL ICQ   Вверх
Doff
Дата 8.2.2008, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



Товарищ Piphon, огромное тебе спасибо! Знай, ты сделал счастливым одного юзера smile Еще раз спасибо!
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0665 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.