Сворачивание разворачивание масштабирование и закрытие окна

Событие при сворачивании окна

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

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

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

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

Ловлю при SizeChanged

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

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

Код
this.Visible = true;
this.WindowState = FormWindowState.Normal.

Сделал свойство самого окна Minimal. При запуске событие приходит.
Я делаю Visible = false;, но после этого окно все-равно отображается свернутым
в панели задач.
Как все-таки при запуске сделать форму невидимой ?

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

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

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

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

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

user posted image

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Цитата(ckopn @ 21.2.2007, 14:04 )
Form2 form = new Form2();
form.ShowDialog();

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

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

Можно простейший примерчик main (может понятней станет)

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

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

Цитата(cthutq @ 21.2.2007, 19:33 )
Но ведь poppup-меню из трея создается на форме
Цитата(cthutq @ 21.2.2007, 19:33 )
Можно простейший примерчик main (может понятней станет)

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

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

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

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

Код
static class Program
<
///
/// The main entry point for the application.
///
[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;

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

Код
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);

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

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

Код
public partial class Form1 : Form
<
public Form1()
<
InitializeComponent();
>

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

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

Источник



Событие при сворачивании окна

1. Какое событие возникает при сворачивании окна?

2. Как при посылке основной форме команды закрытия, форму не закрыть а только свернуть.

для второго — OnClose — Action := caMinimize


Сергей М. © ( 2007-06-08 12:49 ) [2]


> 1. Какое событие возникает при сворачивании окна?
>


> 2. Как при посылке основной форме команды закрытия, форму
> не закрыть а только свернуть

В обработчике OnCloseQuery основной формы написать
Action := caHide;


Сергей М. © ( 2007-06-08 12:50 ) [3]

Поправка:

В обработчике OnClose основной формы написать
Action := caMinimize;


novill © ( 2007-06-08 12:58 ) [4]

> Action := caMinimize;

На D6 это не сработало. Приложение закрылось.
(проверял на новом проекта с одной пустой формой)


clickmaker © ( 2007-06-08 13:07 ) [5]

в исходниках vcl можно много чего интересного найти

if CloseAction <> caNone then
if Application.MainForm = Self then Application.Terminate
else if CloseAction = caHide then Hide
else if CloseAction = caMinimize then WindowState := wsMinimized
else Release;


allucard ( 2007-06-08 13:10 ) [6]


> Сергей М. © (08.06.07 12:50) [3]

> В обработчике OnClose основной формы написать
> Action := caMinimize;

В BDS2006 Закрывает приложение.

Как выловить событие сворачивания окна?


allucard ( 2007-06-08 13:17 ) [7]


> clickmaker © (08.06.07 13:07) [5]

опа, и как быть?


webpauk ( 2007-06-08 13:53 ) [8]

private
procedure WMSYS(var Msg: Tmessage); Message WM_SYSCOMMAND;

procedure Tform1.WMSYS(var Msg: Tmessage);
begin
if Msg.Wparam=sc_close then Sendmessage(Handle, WM_SYSCOMMAND, sc_minimize, 0)
else inherited;
end;


allucard ( 2007-06-08 14:25 ) [9]

Форму всё ещё можно закрыть выбрав закрыть в контекстном меню на панели задач пункт закрыть

там другая константа не WM_SYSCOMMAND;


clickmaker © ( 2007-06-08 14:55 ) [11]

эх, зря я что-ли сюда кусок вцл запостил, 3 минуты рабочего времени потерял? 🙂

оттуда же видно, что при caNone VCL ничего делать не будет. Потому пишем так:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caNone;
SendMessage(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
end;


novill © ( 2007-06-08 15:02 ) [12]

Отвечая на
> 2. Как при посылке основной форме команды закрытия, форму
> не закрыть а только свернуть.

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=false;
Application.Minimize;
end;


allucard ( 2007-06-09 12:09 ) [13]

Всем спасибо.
Работает.


> clickmaker © (08.06.07 14:55) [11]

Тебе отдельное:)


allucard ( 2007-06-14 16:19 ) [14]

Извините что так безпардонно — но хочется продолжить:

Все ваши методы безусловно работают, но окно всё ещё можно закрыть в контекстном меню на панели задач.

Как выловить что-ли глобальное сообщение сообщение закрытия.

Источник

Решение проблемы со сворачивающимися окнами в Windows XP, 7

Сегодня рассмотрим достаточно редкую проблему, которую наблюдают некоторые пользователи операционных систем Windows XP и 7. Заключается проблема в регулярном сворачивании открытых окон или выкидывании из приложений на рабочий стол. Проблема может возникнуть по разным причинам, а потому и способов ее решения существует несколько. Основные из них мы рассмотрим в рамках данной статьи.

Корень проблемы и ее решение

Так что же является корнем проблемы, превращающей рутинную работу в системе Windows XP/Windows Seven в сплошную каторгу? Как бы банально это ни звучало, но виной всему – один из процессов, выполняемых имеющейся в наличии ОС. Предлагаем рассмотреть несколько вариантов того, каким образом можно решить проблему с этими процессами.

1 Вариант

Необходимо зайти в «Диспетчер Задач» (Ctrl+Alt+Del) и перейти во вкладку «Процессы». Находясь в данной вкладке, ищем процесс под названием ouc.exe. Таких процессов может быть и несколько. В таком случае нужно «убить» все отображаемые в списке процессы. Далее проверяем наличие проблемы, запустив процесс и подождав 10-15 минут. При этом необходимо учесть, что закрывать вышеобозначенный процесс придется при каждом входе в систему.

2 Вариант

Это практически идентичный по своему техническому исполнению вариант, однако на этот раз необходимо закрыть команду TWCU.exe. Проделываем те же самые процедуры и после закрытия процессов, также как и в 1 Варианте запускаем приложения. После этого ждем до 15 минут и смотрим на результат.

3 Вариант

Часто случается так, что завершение процессов ouc.exe и TWCU.exe не приводит к должному результату и окна все равно продолжают настойчиво сворачиваться. Также у некоторых эти процессы могут и вовсе не отображаться.

Еще один процесс, который влияет на «сворачивание» окон, будучи в фоновом режиме – «Диспетчер Realtek HD». Его можно отключить, зайдя в «Диспетчер задач», либо выполнив msconfig, далее перейдя в раздел автозагрузка, в котором нужно убрать галочку с «Диспетчера Realtek HD».

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

И еще небольшой совет – чтобы не заниматься отключением подобных процессов вручную каждый раз при входе в систему, как вариант, можно воспользоваться сторонним софтом – так, если речь идет о Windows 7, устанавливаем Windows 7 Manager и в настройках процессов во вкладке автозагрузки отключаем вышеуказанные процессы, после чего производим перезагрузку системы.

Источник

Window. Closing Событие

Определение

Происходит непосредственно после вызова метода Close() и может быть обработано с отменой закрытия окна. Occurs directly after Close() is called, and can be handled to cancel window closure.

Тип события

Исключения

Задано свойство Visibility либо вызван один из методов Show(), ShowDialog() или Close() во время закрытия окна. Visibility is set, or Show(), ShowDialog(), or Close() is called while a window is closing.

Примеры

В следующем примере демонстрируется Window , что определяет, требуется ли для закрытия вмешательство пользователя. The following example demonstrates a Window that determines whether it needs user intervention to close.

Комментарии

Closing может обрабатываться для обнаружения закрытия окна (например, при Close вызове). Closing can be handled to detect when a window is being closed (for example, when Close is called). Кроме того, Closing можно использовать, чтобы предотвратить закрытие окна. Furthermore, Closing can be used to prevent a window from closing. Чтобы предотвратить закрытие окна, можно присвоить Cancel свойству CancelEventArgs аргумента значение true . To prevent a window from closing, you can set the Cancel property of the CancelEventArgs argument to true .

ClosingСобытие возникает при Close вызове, если нажата кнопка закрытия окна или если пользователь нажмет Alt + F4. The Closing event is raised when Close is called, if a window’s Close button is clicked, or if the user presses ALT+F4.

Если принадлежащее окно было открыто окном-владельцем с помощью Show , а окно владельца закрыто, событие принадлежащего окна Closing не вызывается. If an owned window was opened by its owner window using Show, and the owner window is closed, the owned window’s Closing event is not raised. Если владелец окна закрыт (см Owner . раздел), Closing в принадлежащем окне не создается. If the owner of a window is closed (see Owner), Closing is not raised on the owned window.

При Shutdown вызове метода вызывается Closing событие для каждого окна. If Shutdown is called, the Closing event for each window is raised. Однако если операция Closing отменена, то отмена игнорируется. However, if Closing is canceled, cancellation is ignored.

Значение, если сеанс завершается из-за того, что пользователь выходит из системы или завершает работу, Closing не вызывается; обрабатывается SessionEnding для реализации кода, который отменяет закрытие приложения. If a session ends because a user logs off or shuts down, Closing is not raised; handle SessionEnding to implement code that cancels application closure.

Если вы хотите отображать и скрывать окно несколько раз в течение всего времени существования приложения и вы не хотите повторно создавать экземпляры окна при каждом его отображении, можно обойти Closing событие, отменить его и вызвать Hide метод. If you want to show and hide a window multiple times during the lifetime of an application, and you don’t want to reinstantiate the window each time you show it, you can handle the Closing event, cancel it, and call the Hide method. Затем можно вызвать в Show том же экземпляре, чтобы снова открыть его. Then, you can call Show on the same instance to reopen it.

Источник

Сворачивание, разворачивание, масштабирование и закрытие окна

В более ранних версиях Microsoft Windows при открытии окна любой программы в Панели задач появлялась специальная кнопка, на которой было написано название программы — таким образом пользователь мог следить за тем, какие приложения работают на его компьютере в настоящий момент, и имел возможность открыть соответствующее окно одним щелчком мыши. При закрытии программы кнопка исчезала, а для быстрого запуска приложений использовалась отдельная панель, располагавшаяся рядом с кнопкой «Пуск». Начиная с Windows 8 назначение Панели задач несколько изменилось, объединив в себе эти две функции. Если вы пользуетесь какой-либо программой достаточно часто, можно разместить ее кнопку с соответствующим значком непосредственно в Панели задач и запускать это приложение однократным касанием экрана (или щелчком мыши). Если программа уже работает, можно свернуть ее окно в Панель задач — тогда кнопка будет выглядеть «подсвеченной». Следовательно, пользователю, как правило, достаточно бросить на Панель задач один беглый взгляд, чтобы определить, окна каких программ открыты в Windows в данный момент времени.

В панели заголовка окна любой программы имеются три функциональные кнопки, две из которых предназначены для масштабирования окон путем быстрого изменения их размера. Нередко случается так, что в какой-то момент времени открытое окно мешает пользователю в работе, при этом закрывать его не имеет смысла, поскольку оно может понадобиться ему в самом ближайшем будущем. Наиболее логичным шагом в данной ситуации было бы временно убрать окно с экрана, причем таким образом, чтобы его можно было очень быстро вернуть на место. Добиться подобного эффекта позволяет кнопка «Свернуть» — самая левая кнопка из трех кнопок управления окном, расположенных в правой части Панели заголовка.

По нажатию этой кнопки окно будет свернуто в Панель задач, при этом расположенная в Панели задач кнопка со значком приложения станет «выпуклой». Это означает, что в данный момент окно временно удалено с экрана в Панель задач, но не закрыто: для того чтобы вернуть его на место, необходимо нажать на кнопку со значком приложения в Панели задач. После этого окно займет на экране свое прежнее место.

Следует учитывать и то обстоятельство, что в Microsoft Windows реализован так называемый принцип группировки задач, который откладывает определенный отпечаток на методику работы с кнопками в Панели задач. Указанный принцип заключается в следующем: если в ОС Windows открыто несколько окон одной и той же программы, например, программы Проводник, все эти окна будут свернуты в Панель задач в виде одной кнопки. Для того чтобы просмотреть список «спрятанных» под этой кнопкой окон, нажмите и удерживайте соответствующую кнопку в Панели задач пальцем (либо просто наведите на нее курсор мыши и задержите его на несколько секунд). На экране отобразятся миниатюры окон, «спрятанных» под данной кнопкой. Чтобы открыть любое из них, коснитесь соответствующей миниатюры.

На приведенной выше иллюстрации показана ситуация, при которой в Windows одновременно открыто 3 окна программы Проводник. Все они свернуты в Панель задач в виде одной кнопки. Для того чтобы открыть одно из окон, необходимо развернуть список, коснувшись данной кнопки в Панели задач, после чего выбрать касанием любю из отобразившихся миниатюр. Следует понимать, что в одной кнопке группируются лишь однотипные окна: например, если мы одновременно откроем 3 окна программы Проводник, и 4 окна программы Калькулятор, в Панели задач появится две кнопки, каждая из которых будет содержать собственный список окон.

В некоторых случаях пользователю гораздо удобнее работать с окном программы, развернутым во весь экран. Чтобы развернуть окно подобным образом, необходимо щелкнуть мышью на кнопке Развернуть — средней кнопке из трех, расположенных в панели заголовка окна.

После того как окно будет развернуто во весь экран, изображение, демонстрируемое на средней кнопке управления окном, изменится, и примет следующий вид: . Для того чтобы вернуть окну первоначальный размер, при котором оно занимает только определенную часть экрана, следует еще раз щелкнуть мышью на этой кнопке. Таким образом вы можете быстро изменять масштаб окна, либо увеличивая его до размеров видимой области экрана, либо одним щелчком мыши возвращая его в первоначальное состояние.

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

Как уже упоминалось ранее, кнопки в Панели задач могут отображаться не только тогда, когда приложение запущено — пользователь может закрепить кнопку в Панели задач, чтобы запускать эту программу, что называется, «в одно касание». Для того чтобы прикрепить кнопку приложения к Панели задач, запустите данную программу, после чего выполните «долгое нажатие» отображающейся в Панели задач кнопки (на персональном компьютере данная функция реализуется щелчком правой клавишей мыши). В появившемся контекстном меню выберите пункт «Закрепить программу в Панели задач».

Удалить кнопку из Панели задач можно аналогичным способом, выбрав в контекстном меню пункт «Изъять программу из панели задач». Существует и еще один способ добавить значок приложения на Панель задач — для этого перейдите на Начальный экран Windows, откройте панель свойств плитки нужного приложения (выполнив короткое движение вниз на плитке или щелкнув на ней правой клавишей мыши), и коснитесь на этой панели кнопки «Закрепить на панели задач».

Источник

Читайте также:  Преимущества и недостатки окон со встроенными жалюзи

Related Post

Сонник Окно закрывать к чему снитсяСонник Окно закрывать к чему снится

Закрывать окно Закрывать окно во сне является плохим знаком. Сновидение предвещает возникновение трудностей на пути к поставленной цели. Сейчас не лучшее время для новых начинаний. Все важные дела лучше отложить

Как поймать координаты клиентской части окнаКак поймать координаты клиентской части окна

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

Интерьер комнаты без окон 21 фото делаем помещение уютным и светлымИнтерьер комнаты без окон 21 фото делаем помещение уютным и светлым

Если нет окна. #1 kap kap —> Здравствуйте! Подскажите, пожалуйста, вы сталкивались с государственными нормативными требованиями охраны труда в части конкретных условий размещения сотрудников предприятий, организаций? Если, например, в помещении

Adblock
detector