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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Несколько вопросов по сворачивания проги в трей 
:(
    Опции темы
alexplato
Дата 5.1.2011, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Сворачивание реализую следующим образом:

Код


private System.Windows.Forms.NotifyIcon notifyIcon1;
        private System.Windows.Forms.ContextMenu contextMenu1;
        private System.Windows.Forms.MenuItem menuItem1;

public Form1()
        {
            
            #region Notifyicon
           
            
            this.ShowInTaskbar = false;
            
            this.contextMenu1 = new System.Windows.Forms.ContextMenu();
            this.menuItem1 = new System.Windows.Forms.MenuItem();

            // Initialize contextMenu1
            this.contextMenu1.MenuItems.AddRange(
                        new System.Windows.Forms.MenuItem[] { this.menuItem1 });

            // Initialize menuItem1
            this.menuItem1.Index = 0;
            this.menuItem1.Text = "Выйти";
            this.menuItem1.Click += new System.EventHandler(this.menuItem1_Click);

            // Set up how the form should be displayed.
            this.ClientSize = new System.Drawing.Size(292, 266);
            

            // Create the NotifyIcon.
            this.notifyIcon1 = new System.Windows.Forms.NotifyIcon();

            // The Icon property sets the icon that will appear
            // in the systray for this application.
            notifyIcon1.Icon = new Icon("icon.ico");

            // The ContextMenu property sets the menu that will
            // appear when the systray icon is right clicked.
            notifyIcon1.ContextMenu = this.contextMenu1;

            // The Text property sets the text that will be displayed,
            // in a tooltip, when the mouse hovers over the systray icon.
            
            notifyIcon1.Visible = true;

            // Handle the DoubleClick event to activate the form.
            notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon1_DoubleClick);

            #endregion
....

  private void notifyIcon1_DoubleClick(object Sender, EventArgs e)
        {
            // Show the form when the user double clicks on the notify icon.

            // Set the WindowState to normal if the form is minimized.
            if (this.WindowState == FormWindowState.Minimized)
                this.WindowState = FormWindowState.Normal;
            
            // Activate the form.
            this.Activate();
        }

        private void menuItem1_Click(object Sender, EventArgs e)
        {
            // Close the form, which closes the application.
            //this.Close();
            notifyIcon1.Visible = false;
            Application.Exit();
        }


В принципе работает все нормально, но есть 2 проблемы:

1. После закрытия приложения иногда иконка в трее остается (правда она скоро исчезает, но все-равно было бы желательно чтобы он удалялась при закрытии);

2. (Вот чего я вообще не могу понять) приложение сворачивается не только в трей, но и в маленький кусочек (не знаю как правильно назвать) над пуском:

user posted image

как от него избавиться?

PM MAIL   Вверх
jonie
Дата 5.1.2011, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



Цитата


1. После закрытия приложения иногда иконка в трее остается (правда она скоро исчезает, но все-равно было бы желательно чтобы он удалялась при закрытии);
в OnClosed сделай ей удаление... ну или в Main() в самом конце.
Цитата


2. (Вот чего я вообще не могу понять) приложение сворачивается не только в трей, но и в маленький кусочек (не знаю как правильно назвать) над пуском:
надо посмотреть стили формы главной твоего приложения. Уж не SingleDialog или подобное там стоит? Ну и можно hide() делать окну...

Это сообщение отредактировал(а) jonie - 5.1.2011, 16:10


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
alexplato
Дата 5.1.2011, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(jonie @ 5.1.2011,  16:10)
Цитата


1. После закрытия приложения иногда иконка в трее остается (правда она скоро исчезает, но все-равно было бы желательно чтобы он удалялась при закрытии);
в OnClosed сделай ей удаление... ну или в Main() в самом конце.
Цитата


2. (Вот чего я вообще не могу понять) приложение сворачивается не только в трей, но и в маленький кусочек (не знаю как правильно назвать) над пуском:
надо посмотреть стили формы главной твоего приложения. Уж не SingleDialog или подобное там стоит? Ну и можно hide() делать окну...

Насколько я понял 

Код

notifyIcon1.Visible = false;


это не то, что вы имеете в виду под словом удаление?

По поводу стилей формы: FormBorderStyle = Sizable; Это оно?

Это сообщение отредактировал(а) alexplato - 5.1.2011, 17:00
PM MAIL   Вверх
alexplato
Дата 5.1.2011, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Проблему с скрытием окна решил:

Код

private void Form1_Resize(object sender, System.EventArgs e)
        {

            if (FormWindowState.Minimized == WindowState)
            {
                Hide();
            }
                
        }


Правда пришлось также чуть подредактировать обработчик разворачивания:

Код

 private void notifyIcon1_DoubleClick(object Sender, EventArgs e)
        {
            // Show the form when the user double clicks on the notify icon.

            // Set the WindowState to normal if the form is minimized.
            if (this.WindowState == FormWindowState.Minimized)
            {
                Show();
                this.WindowState = FormWindowState.Normal;
                // Activate the form.
                this.Activate();
                
            }

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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