private void main_f_Resize(object sender, EventArgs e)
{
if (FormWindowState.Minimized == WindowState)
{
notifyIcon.Visible = true;
Hide();
}
}
Свернуть в трей при загрузке
Есть такая проблема:
программа читает инфу из конфига и если там стоит флаг на сворачивание при старте, то соответственно прячет её в трей.
Как просто свернуть в трей понятно. Возникла проблема сворачивания именно во время запуска программы.
if (splitline[7] == "1")
{
TrayLoadCheckBox.Checked = true;
this.Hide();
}
Вот это не работает. Есть догадки того что не сворачивается так как событие форм_лоад ещё не завершилось.
Помогите, плз, решить проблему.
Добавляю программу в автозагрузку через реестр.
При обычном запуске, выводит полный путь к программе так как надо(напр C:\Program Files\Program\prog.exe).
При автозапуске полный путь уже выглядит так (C:\Documents and Settings\USER\prog.exe), причем программа загружается.
Путь к файлу получаю так: System.IO.Path.GetFullPath("prog.exe");
Когда делаю запись в реестр прописывается правильный путь до файла.
Почему так и как этого избежать? =/
Первый вопрос решил, поместив
this.Hide();
в событие формы Activated.
Второй:
Вместо System.IO.Path.GetFullPath("prog.exe");
Использовал Application.ExecutablePath;
Цитата: Siquell
Все... сам разобрался :)
Первый вопрос решил, поместив
this.Hide();
в событие формы Activated.
Второй:
Вместо System.IO.Path.GetFullPath("prog.exe");
Использовал Application.ExecutablePath;
Первый вопрос решил, поместив
this.Hide();
в событие формы Activated.
Второй:
Вместо System.IO.Path.GetFullPath("prog.exe");
Использовал Application.ExecutablePath;
что то у меня не получается, вернее получается, но не правильно(((
вот так при сворачивании окна прячу его в трей
Код:
так кликая по иконке в трее возвращаю окно обратно
Код:
private void notifyIcon_Click(object sender, EventArgs e)
{
Show();
WindowState = FormWindowState.Normal;
notifyIcon.Visible = false;
}
{
Show();
WindowState = FormWindowState.Normal;
notifyIcon.Visible = false;
}
и так при запуске проги сразу прячу ее в трей
Код:
private void main_f_Activated(object sender, EventArgs e)
{
if (STRUCT_AppSetting.MinimToTray==1)
{
notifyIcon.Visible = true;
Hide();
}
}
{
if (STRUCT_AppSetting.MinimToTray==1)
{
notifyIcon.Visible = true;
Hide();
}
}
казус следующий, прога как положено при сапуске прячеться в терй, когда кликаю по трею, она показываеться и тут же прячеться )))) видать срабатывает событие Activated
можно конечно при запуске булевской переменной присваивать истину, и потом:
Код:
private void main_f_Activated(object sender, EventArgs e)
{
if (STRUCT_AppSetting.MinimToTray==1 и переменная истина)
{
notifyIcon.Visible = true;
Hide();
}
}
{
if (STRUCT_AppSetting.MinimToTray==1 и переменная истина)
{
notifyIcon.Visible = true;
Hide();
}
}
но это мне кажеться черезжопный метод, должно что то быть правильней
подскажите как правильно тут изголиться??????
Может,просто не в событии Activate прописывать?Вы правильно поняли–оно сворачивается потому,что происходит это событие.Поэтому форму надо прятать в другом событии.Или через булевскую переменную,это нормальный метод
Событие Load
Это событие генерируется, когда экземпляр формы впервые загружается в программу, то есть при первом вызове метода Form.Show или Form. Show Dialog для экземпляра формы. Рассмотрим пример:
Form myForm = new Form();
myForm.ShowO; // Здесь срабатывает событие Load
myForm.HideO; // Форма стала невидимой
myForm.ShowO; // Событие Load больше не срабатывает
myForm.CloseO; // Эта команда закрывает и удаляет ф о р м у . . .
myForm.ShowO; // ...а эта - генерирует исключение, поскольку
// объект myForrn уже недоступен
События Activated и Deactivated
Событие Activated многократно срабатывает в течение жизни формы. Оно генерируется, когда форма получает фокус. Так, это происходит при вызове методов
Form.Show, Form. Show Dialog и Form. Activate, а также при активации формы. Обработчик события Activated применяют для автоматической передачи фокуса определенному элементу управления формы, а также для изменения цвета активного эле-
мента управления, чтобы сделать его заметным пользователю.
Напротив, событие Deactivate генерируется, когда форма теряет фокус. Это про-
исходит из-за взаимодействия пользователя с интерфейсом либо при вызове методов Form.Hide или Form.Close(однако метод Form.Close генерирует это событие, только если закрываемая форма является активной). Это событие применяют для про-
верки данных, введенных пользователем.
События Activated и Deactivated генерируются только при перемещении фокуса в
пределах приложения: если переключиться на другое приложение и обратно, ни
одно из них не сработает.
и никаких заморочек с переменными не надо ))