Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WPF: Сворачивание окна при ShowInTaskbar=False, не полностью сворачивает 
:(
    Опции темы
Black
  Дата 25.7.2010, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


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

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



Есть окно, ему ставлю ShowInTaskbar="False" чтобы его кнопка не отображалась в панели задач.
Если нажать на кнопку "Свернуть окно", то окошко сворачивается рядом с кнопкой "пуск". 
Вот рисунок:
http://ipicture.ru/uploads/100725/UQ417WdTV1.jpg

Мне хотелось чтобы оно просто исчезало.

Стал делать так 

Код

         void OnStateChanged(object sender, EventArgs args)
        {
            if(WindowState == WindowState.Minimized)
            {
             WindowState = WindowState.Normal;
             Hide();
            }
        }


Теперь при сворачивании окна, оно как бы около 1 секунды отображается возле кнопки Пуск и пропадает.
Все-таки это тоже как-то не так. Злит меня =)

Что посоветуете, может можно как-то раньше перехватить событие сворачивания окна или переопределить действия кнопки "Свернуть окно", чтобы не сворачивать его, а сразу делать ему Hide()

Спасибо =)

Это сообщение отредактировал(а) Black - 25.7.2010, 14:30


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Black
Дата 25.7.2010, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


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

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



Видимо такое поведение только в Windows XP проявляется


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
CasperSC
Дата 26.7.2010, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Попробуй так:

Код

using System.Windows.Threading;

    public partial class WindowMain : Window
    {
        DispatcherTimer timerCloseProgram = new DispatcherTimer();

        public WindowMain()
        {
            InitializeComponent();
            timerCloseProgram.Interval = new TimeSpan(0, 0, 0, 0, 250);
            timerCloseProgram.Tick += new EventHandler(timerCloseProgram_Tick);
        }

        private void timerCloseProgram_Tick(object sender, EventArgs e)
        {
            this.Hide();
            this.timerCloseProgram.Stop();
        }

        private void btnHide_Click(object sender, RoutedEventArgs e)
        {
            this.WindowState = System.Windows.WindowState.Minimized;
            this.timerCloseProgram.Start();
        }
    }


Отпиши, если вариант лучше найдёшь. Да и вообще мысли по этому поводу напиши, интересно.

Это сообщение отредактировал(а) CasperSC - 26.7.2010, 01:02
PM MAIL   Вверх
Black
Дата 28.7.2010, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


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

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



Этот код каждые 250 миллисекунд будет ставить окну Hide() ?


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
-Mikle-
Дата 28.7.2010, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



нет один раз, там же this.timerCloseProgram.Stop() стоит... но решение не из лучших... надо другое...

Добавлено через 13 минут и 7 секунд
оно будет гораздо быстрее пропадать, если напишешь
Код

if (WindowState == WindowState.Minimized)
    this.Hide();


Добавлено через 14 минут и 55 секунд
практически мгновенно


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
-Mikle-
Дата 28.7.2010, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



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


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Black
Дата 28.7.2010, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


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

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



-Mikle-, сделаю кнопки свои, наверное.
А Hide() и this.Hide() это же одно и тоже.


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
-Mikle-
Дата 29.7.2010, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



 smile ну спасибо за новость... я же не имел ввиду, что это разные методы, в моем куске нету WindowState = WindowState.Normal, именно оно добавляет дополнительную, не нужную и хорошо заметную анимацию перед тем, как окно прячется. Попробуй, может тебе понравится и не прийдется делать щас свой шаблон окна.



--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
CasperSC
Дата 31.7.2010, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вообще мой способ нужен в том случае, если надо, чтобы например приложение при нажатии на кнопке "Свернуть" просто сворачивалось, а при нажатии на кнопке "Закрыть" то анимированно сворачивалось в трей как бы. По другому незнаю как сделать для этого случая.
PM MAIL   Вверх
Kefir
Дата 3.8.2010, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

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



Погуглил ответ - в общем и целом просто так с наскока это не сделать, но альтернативно можно подключиться к WndProc и слушать сообщения там. Полное решение и принцип работы находится тут.
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




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


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

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