2013-07-14 1 views
0
this.ShowInTaskbar = false; 
this.WindowState = FormWindowState.Minimized; 
//this.visible = false (Hotkeys stop working forever but the grey rest of the form would disappear from above taskbar) 
ReRegisterHotkeys(); 

Я использую приведенный выше код, чтобы свести к минимуму мое приложение с иконкой в ​​трее. Теперь свернутый остаток моей формы висит в левом правом углу немного над панелью задач, где находится кнопка запуска. Видимый - это только серые заголовки форм с маленьким «x», чтобы закрыть его и текст надписи над заголовком. Это очень странно. Я установил свою форму для «имитации» и не должен отображаться на панели задач, и это все равно. Я зарегистрировал Горячие клавиши с моей формой, поэтому я не могу установить ее на «невидимую», иначе горячие клавиши перестают работать, даже если я снова зарегистрирую горячие клавиши. Я еще не нашел альтернативы, чтобы удалить эту уменьшенную подпись в форме, отличную от «невидимого» , или удалить его заголовок, что я также не хочу делать. Мне нужна панель заголовка, значок заголовка и панель управления заголовком в этой программе, форма не должна становиться окном инструмента или без границ.Минимизация формы окон системы в лотке на C#, не видя, что она висит там, где находится панель задач

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

Я взял код своей горячей клавиши из этого example. Единственное различие заключается в том, что я упаковал процедуру регистрации горячей клавиши в подфункцию с именем «ReRegisterHotkeys()».

Важно: Проблема с заголовком, показывающим, когда форма сведена к минимуму, не связана с зарегистрированными горячими клавишами. Это обычная проблема «C#». Если у меня есть форма и свести ее к минимуму и установить ее на невидимой панели задач , она все равно отображает заголовок с символом «x» на панели задач. Это я хочу удалить, не делая форму невидимой или не удаляя стиль окна. «this.show» или «this.hide» ведет себя так же фатально, как «this.visible = true/false», так как горячие клавиши исчезли. Я создаю свою форму, как показано по умолчанию, и не хочу, чтобы она уже была скрыта.

Это то, что не должно быть там - как удалить его, не повреждая: enter image description here

+0

Очевидно, что это XY вопрос. Переопределите метод OnHandleCreated() в вашем классе формы и установите на нем точку останова. Он должен ударить только один раз при запуске. Если он сломается после этого, загляните в стек вызовов, чтобы найти оператор в коде, который заново заработал окно. В противном случае это также метод, в котором вам необходимо зарегистрировать ключи. –

ответ

0

Все, что вам нужно сделать, это вызов Hide() и Show(), когда вы хотите, чтобы скрыть и показать свою форму. ПРИМЕЧАНИЕ: Hide() будет скрываться от панели задач.

private void Form1_Resize(object sender, EventArgs e) 
{ 
    if (WindowState == FormWindowState.Minimized) 
     Hide(); 
} 

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

Очевидно, что для отображения приложения в системном трее вам понадобится NotifyIcon.

Наконец ваш код будет выглядеть следующим образом:

private void Form1_Resize(object sender, EventArgs e) 
{ 
    if (WindowState == FormWindowState.Minimized) 
    { 
     Hide(); 
     notifyIcon1.Visible = true; 
    } 
} 

private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e) 
{ 
    Show(); 
    notifyIcon1.Visible = false; 
    WindowState = FormWindowState.Normal; 
} 
+0

, то почему бы не установить непрозрачность формы на 0%, чтобы скрыть ее и 100%, чтобы показать ее? –

+0

также вы пробовали зарегистрировать горячую клавишу в отдельном классе? как в этой теме: http: // stackoverflow.com/questions/2450373/set-global-hotkeys-using-c-sharp –

+0

Мне удалось использовать горячие клавиши клавиатуры с указанной выше ссылкой на C#. но это зависит от вас. –

 Смежные вопросы

  • Нет связанных вопросов^_^