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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как запретить сворачивание формы? Чтоб win+d на эту форму не влиял. 
:(
    Опции темы
Riccon
Дата 30.4.2007, 11:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Добрового дня, господа.
У меня такая задача. На десктопе должно висеть окошко для показывания всякой шизы(рекламной). Причём висеть оно должно постоянно и не мешая работе других приложений. Что-то вроде часов у висты. 

Так вот вопрос в том, как сделать так, чтоб это окно невозможно было свернуть?

PM MAIL   Вверх
Retro
Дата 30.4.2007, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Диалектик
***


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

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



Убрать минимайз(или вообще весь бордер), сделать прозрачным(как опция) и не отображать на панели.
Закрывать по кнопке.
PM MAIL   Вверх
Riccon
Дата 30.4.2007, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спаисбо. Только поясните подробнее про это:
Цитата

сделать прозрачным(как опция)


Мне-то еще нужно, чтоб по Win+D окно не сворачивалось.

PM MAIL   Вверх
Retro
Дата 30.4.2007, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Диалектик
***


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

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



Цитата(Riccon @  30.4.2007,  11:47 Найти цитируемый пост)
Только поясните подробнее про это:
Цитата

сделать прозрачным(как опция)

Это просто спецэффект. По надобности.

Насчет Win+D не уверен. Я поставил TopMost = true; и по Win+D оно не сворачивается. Если подходит то пожалуйста.

Где-то так:
Код

            this.ShowInTaskbar = false;
            this.FormBorderStyle = FormBorderStyle.None;
            this.TopMost = true;

PM MAIL   Вверх
Riccon
Дата 1.5.2007, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Не, TopMost не подходит. Эта панелька должна быть как бы элементом десктопа, подобно иконкам.  Её могут перекрывать другие окна. Только сворачиваться не должна.
PM MAIL   Вверх
archeg
Дата 1.5.2007, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Riccon @ 1.5.2007,  11:35)
Не, TopMost не подходит. Эта панелька должна быть как бы элементом десктопа, подобно иконкам.  Её могут перекрывать другие окна. Только сворачиваться не должна.

Разварачивай ее в таймере  smile

Добавлено через 13 минут и 7 секунд
Может быть это поможет:
Код

 public partial class Form1 : Form
    {
        System.Timers.Timer timer;
        DateTime TTL;
        InvokeDelegate d1;
        public Form1()
        {
            timer = new System.Timers.Timer(100.0f);
            timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
            timer.Start();
            InitializeComponent();
            d1 = Change;
        }

        void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            try
            {
                Invoke(d1);
            }
            catch
            {
                this.Close();
            }
        }

        delegate void InvokeDelegate();
        void Change()
        {
            if (TTL.AddMilliseconds(100.0f) < DateTime.Now)
            {
                this.WindowState = FormWindowState.Normal;
            }
        }

        void timer_Tick(object sender, EventArgs e)
        {
            if (TTL.AddMilliseconds(100.0f) < DateTime.Now)
            {
                this.WindowState = FormWindowState.Normal;
            }
        }

        private void richTextBox1_Validated(object sender, EventArgs e)
        {
            TTL = DateTime.Now;
        }
    }

Написал быстро, может можно лучше


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
Riccon
Дата 2.5.2007, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

Разварачивай ее в таймере

В принципе - выход, учитывая, что таймер там будет работать постоянно. Поставил бы плюс за оригинальность решения, но 100 постов нету. По этому, просто, спасибо smile

Хотя, наверняка, предпочтительнее отловить нужное событие. А какие события возникают у формы при нажатии Win+D или Win+M я не представляю как узнать.:(
PM MAIL   Вверх
Naum
Дата 2.5.2007, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

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



Можно по событию SizeChanged проверять, если WindowState == Minimize, тогда разворачивать. А еще где-то на форуме уже обсуждалось как можно перехватывать нажатие клавиш, и обрабатывать их самому.


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
encaps
Дата 13.7.2007, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Retro @  30.4.2007,  12:28 Найти цитируемый пост)
Убрать минимайз

ну так как же отменить сворачивание формы?

PM MAIL WWW   Вверх
mr.DUDA
Дата 13.7.2007, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



encaps, неужто из вышеприведённых постов неясно как это сделать ?


--------------------
user posted image
PM MAIL WWW   Вверх
NURMS
Дата 14.7.2007, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я что-то не понял. А просто в опциях поставить MinimizeBox = False yне пойдёт?
PM MAIL   Вверх
Retro
Дата 14.7.2007, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Диалектик
***


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

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



Цитата(NURMS @  14.7.2007,  21:52 Найти цитируемый пост)
Я что-то не понял. А просто в опциях поставить MinimizeBox = False yне пойдёт? 

Вопрос, ИМХО, стоял больше о горячих клавишах - win+d.
Если TopMost не подходит то archeg уже ответил, разворачивать по таймеру.
PM MAIL   Вверх
Atiskara
  Дата 9.8.2010, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

        {
            if (TTL.AddMilliseconds(100.0f) < DateTime.Now)
            {
                this.WindowState = FormWindowState.Normal;
            }
        }


Спасибо за реализованный таймер. Я его использовала для всяких разных вещей, но вот по прямому назначению не удалось. При присваивании нового значения свойству WindowState нормализация окна не происходит((.
Кто может подсказать в чем причина?

Кстати да, приложение разрабатываю на VS2010 WPF.

Это сообщение отредактировал(а) Atiskara - 9.8.2010, 07:29
PM MAIL   Вверх
IGV
Дата 13.8.2010, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



эм....ну как бы вам сказать...с точки зрения пользователя, я бы вас убил за такие вещи, а с точки зрения программиста могу посоветовать почитать здесь насчет сабжа:
http://www.codeproject.com/KB/dotnet/DesktopWidget.aspx

а так для этого нужно дергать WinAPI.
PM MAIL ICQ   Вверх
Planeworld
Дата 5.12.2010, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Перехватываем команду, и подменяем её такой же но без handle-а вашего окна. как уже писалось выше winapi
имхо самое стабильное и не юзерфрендлиsmile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

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


 




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


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

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