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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Всплывающая менюшка, При клике на НотифиИкон 
:(
    Опции темы
SeeD
Дата 31.8.2006, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Приветсвую! 
Я свернул программу в трей. А как сделать, чтобы при клике на иконке правой мышкой появлялась меню? Например, чтобы можно было выбрать между выходом из программы и настройками.
И еще такой вопрос : 
Можно ли сделать, чтобы бы была только форма? Без кнопки закрытия, в правом углу.
Сильно н ругайтесь, на .net перешел вчера... =)

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


stravaganza
**


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

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



на второй вопрос :

Цитата

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


Можно. У формы есть свойство ControlBox. Под этим боксом понимаются сразу все три : MinimizeBox, MaximizeBox, CloseBox (ещё есть HelpBox, но он по умолчанию выключен). Так вот, чтобы разом уволить всех троих, нужно

Код

form1.ControlBox = false;


правда, кнопки минимизации тогда не будет, но остаётся работать то, что было, начиная с самых первых оконных систем : минимизация/максимизация двойным кликом по заголовку формы.

Можно по-другому : перехватывать сообщение, возникающее при нажатии кнопки закрытия. Для этого следующую перегрузку метода WndProc следует добавить в класс формы :

Код

        protected override void WndProc(ref Message m)
        {
            // шестнадцатиричные коды сообщений 
            int WM_SYSCOMMAND = System.Convert.ToInt32("112",16);
            int SC_CLOSE = System.Convert.ToInt32("F060", 16);

            // ловим нужные нам сообщения
            if ((m.Msg == WM_SYSCOMMAND) && (m.WParam.ToInt32() == SC_CLOSE))
            {
                // нажата кнопка закрытия
                DialogResult dialogResult = MessageBox.Show("Вы действительно хотите нас покинуть?", "Подтверждение",
                    MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
                if (dialogResult == DialogResult.Yes) this.Close();
                return;
            }

            // запускаем унаследованный стандартный обработчик для всех остальных сообщений
            base.WndProc(ref m);
        }


- научился у Tim Gallivan.

Добавлено @ 23:09 
На счёт первого вопроса - думаю, что стоит копать от трей-решения, которое предложил mr.DUDA в ответ на более общий вопрос. То есть, либо навесить ContextMenuStrip на notifyIcon, либо добавить обработчик клика правой кнопкой. 

Это сообщение отредактировал(а) marcusmae - 1.9.2006, 00:23


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
ivashkanet
Дата 1.9.2006, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(marcusmae @  31.8.2006,  23:01 Найти цитируемый пост)
ContextMenuStrip

Конечно его smile Он специально и создан для этих целей smile
Строишь меню, а потом присваеваешь его свойству ContextMenuStrip
 smile

Добавлено @ 08:18 
Цитата(marcusmae @  31.8.2006,  23:01 Найти цитируемый пост)
  protected override void WndProc(ref Message m)

Круто, такое нужно в ФАК
PM MAIL WWW ICQ   Вверх
VisualProgrammerNET
Дата 1.9.2006, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почётный халявщик
**


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

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



Чем не нравится обычный Form_Closing?  smile 

Код

public void Form_Closing(Евент e)
{
     //показываем мессажбокс с выбором
     if (нет) e.Cancel = true;
} 

Зачем WinProc какой-то?  smile 
  
Кнопку закрытия и вообще форму без кнопок можно сделать указав в свойствах BorderStyle = none.


--------------------
3 ГОДА НА user posted image 
PM MAIL ICQ   Вверх
marcusmae
Дата 1.9.2006, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


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

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



Цитата

Зачем WinProc какой-то?


да, согласен, Ваш пример проще. Пусть тогда мой будет иллюстрацией более общих возможностей. Всё-равно ведь, Form_Closing срабатывает при появлении сообщения SC_CLOSE ;)


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
ivashkanet
Дата 1.9.2006, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(VisualProgrammerNET @  1.9.2006,  13:40 Найти цитируемый пост)
Зачем WinProc какой-то? 

VisualProgrammerNET, тут он действительно не лучше smile
Но какая стоит за ним мощь smile Через него можно ведь отлавливать любое сообщение  smile 
PM MAIL WWW ICQ   Вверх
SeeD
Дата 1.9.2006, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ух ты! спасибо! не ожидал таких полных ответов! благодарю! пойду пробовать
PM MAIL   Вверх
Legolas
Дата 28.8.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(SeeD @ 31.8.2006,  22:41)
Можно ли сделать, чтобы бы была только форма? Без кнопки закрытия, в правом углу.

В свойствах формы поменяй значение параметра ControlBox на "false".
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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