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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сворачивание окна 
:(
    Опции темы
cthutq
Дата 14.2.2007, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Хотелось бы при запуске приложения, чтоб окно не показывалось, а только
в трее появлялась иконка.

Я сделал что при двойном щелчке на иконке в трее окно показывалось, а при минимизации
окна отлавливалось событие и окно делалось невидимым. Но никак не могу
при запуске приложения сделать так, чтоб окно сразу не показывалось.

Ловлю при SizeChanged
Код

if (this.WindowState == FormWindowState.Minimal) this.Visible = false;


а при двойном клике
Код

this.Visible = true;
this.WindowState = FormWindowState.Normal.


Сделал свойство самого окна Minimal. При запуске событие приходит.
Я делаю Visible = false;, но после этого окно все-равно отображается свернутым
в панели задач.
Как все-таки при запуске сделать форму невидимой ?
PM MAIL   Вверх
Naum
Дата 14.2.2007, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Можно просто запускать приложение не с формы.
Найди процедуру Main(). В ней должно быть что-то вроде
Код

Application.Run(Form1);

Удали эту строчку и добавь примерно следующее
Код

NotifyIcon myNotifyIcon = new NotifyIcon();
//Определяем необходимые свойства myNotifyIcon, в том числе и устанавливаем myNotifyIcon.Visible = true.
Application.Run();

А при двойном клике по myNotifyIcon определяем, если нужная нам форма == null, тогда создаем ее и выполняем исходную логику.


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


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


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

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



Кстати тема о сворачивании приложения в трей уже поднималась много раз, поищите по форуму.


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


Шустрый
*


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

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



Цитата(Naum @  14.2.2007,  11:22 Найти цитируемый пост)
Удали эту строчку и добавь примерно следующее

получается, что все менюшки, иконки, события... руками нужно прописывать ?
Слишком накладно
PM MAIL   Вверх
Naum
Дата 14.2.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(cthutq @  14.2.2007,  16:07 Найти цитируемый пост)
получается, что все менюшки, иконки, события... руками нужно прописывать ?

Зачем? От удаления этой строки редактор форм не перестает работать. 


Это сообщение отредактировал(а) Naum - 14.2.2007, 15:11


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


Шустрый
*


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

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



Цитата(Naum @  14.2.2007,  15:10 Найти цитируемый пост)
Зачем? От удаления этой строки редактор форм не перестает работать. 

... Не совсем понял smile


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


Опытный
**


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

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



cthutq, это я не понял, почему, при замене строки Application.Run(...), менюшки, иконки, события придется рисовать вручную?


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


Шустрый
*


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

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



Цитата(cthutq @ 17.2.2007,  01:07)
Цитата(Naum @  14.2.2007,  15:10 Найти цитируемый пост)
Зачем? От удаления этой строки редактор форм не перестает работать. 

... Не совсем понял :)

Это значит пишешь

Form2 form = new Form2();
form.ShowDialog();

Form2 Это форма которую создал ты сам в Висуал Студио. Нарисовал короче.

PM MAIL   Вверх
cthutq
Дата 21.2.2007, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(ckopn @  21.2.2007,  14:04 Найти цитируемый пост)
Form2 form = new Form2();
form.ShowDialog();

Form2 Это форма которую создал ты сам в Висуал Студио. Нарисовал короче.

это я понял. Но ведь poppup-меню из трея создается на форме. А если создавать форму 
при щелчке на трее, то как тогда ?

Просто я не совсем понимаю как можно создать NotifyIcon и меню для него без главного окна приложения.

Можно простейший примерчик main (может понятней станет)
PM MAIL   Вверх
ivashkanet
Дата 22.2.2007, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(cthutq @  21.2.2007,  19:33 Найти цитируемый пост)
Но ведь poppup-меню из трея создается на форме

Нет. Это просто дизайнер создает его за тебя
Цитата(cthutq @  21.2.2007,  19:33 Найти цитируемый пост)
Можно простейший примерчик main (может понятней станет) 

Naum ведь давал его.
PM MAIL WWW ICQ   Вверх
ivashkanet
Дата 22.2.2007, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Наваял проект (см. в атаче)

Класс Programm где и создается иконка в трее
Код

    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // Создаем иконку в трее и назначаем ей менюшку 
            NotifyIcon trayMenu = new NotifyIcon();

            trayMenu.Icon = Properties.Resources.TrayIcon;
            trayMenu.ContextMenuStrip = new MenuInTray();

            // Показываем ее
            trayMenu.Visible = true;

            // Запускаем приложение
            Application.Run();
        }


Менюшка, которая будет висеть на иконке в трее
Код

    public class MenuInTray : ContextMenuStrip
    {
        private ToolStripMenuItem _showFormToolStripMenuItem;
        private ToolStripMenuItem _closeApplicationToolStripMenuItem;

        public MenuInTray()
            : base()
        {
            _showFormToolStripMenuItem = new ToolStripMenuItem("Показать форму");
            _showFormToolStripMenuItem.Click += new EventHandler(_showFormToolStripMenuItem_Click);
            this.Items.Add(_showFormToolStripMenuItem);

            _closeApplicationToolStripMenuItem = new ToolStripMenuItem("Выход");
            _closeApplicationToolStripMenuItem.Click += new EventHandler(_closeApplicationToolStripMenuItem_Click);

            this.Items.Add(_closeApplicationToolStripMenuItem);
        }

        void _showFormToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MainFormInstance.MainForm.Show();
            if (MainFormInstance.MainForm.WindowState == FormWindowState.Minimized)
                MainFormInstance.MainForm.WindowState = FormWindowState.Normal;
        }

        void _closeApplicationToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MainFormInstance.MainForm.Dispose();
            Application.Exit();
        }
    }


Форма, которая только что и делает, что сворачивается вместо закрытия
Код

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.WindowState = FormWindowState.Minimized;
            this.Hide();

            e.Cancel = true;
        }
    }


Небольшой классик, которы предоставляет доступ к форме из любого места
Код

    public class MainFormInstance
    {
        private static Form1 _mainForm;

        public static Form1 MainForm
        {
            get
            {
                if (_mainForm == null) _mainForm = new Form1();
                return _mainForm;
            }
        }
    }


Присоединённый файл ( Кол-во скачиваний: 33 )
Присоединённый файл  Test_wa_cs.zip 90,71 Kb
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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