我有一个应用程序,我正在(对我自己),我想阻止Window显示。
到目前为止,我得到的是WindowState.Minimized
,以便Form的初始状态最小化。当我点击任务栏中的应用程序图标时,我希望它保持最小化 - 而不仅仅是Hide()
它显示的时候。所以我认为这样的事情可能有用:
protected override void OnGotFocus(EventArgs e)
{
this.WindowState = WindowState.Minimized;
}
但我错了。所以我想的是我需要在 OnGotFocus
之前发生的事情。仅仅在聚焦时隐藏它的原因是不够的,因为你可以非常微弱地看到它在this.WindowState = WindowState.Minimize
被调用之前单击任务栏中的图标时实际显示出来。
我唯一的要求是,当在任务栏上单击图标时,不得显示该应用程序。不过,我需要以某种方式以编程方式显示窗口。
如何确保点击其图标永远不显示窗口?
答案 0 :(得分:3)
这似乎对我有用,没有"提示"来来去去:
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0112) //WM_SYSCOMMAND
{
if ((m.WParam.ToInt32() & 0xFFF0) == 0xF030 ||
(m.WParam.ToInt32() & 0xFFF0) == 0xF120)
m.WParam = new IntPtr(0xF020);
}
base.WndProc(ref m);
}
只需覆盖WndProc
,即可同时捕捉SC_MAXIMIZE (0xF030)
和SC_RESTORE (0x0F120)
。 SC_MINIMIZE is 0xF020
。
正如Hans建议的那样,我已经编辑了我的帖子,以掩盖系统根据此MSDN部分使用的低位:http://msdn.microsoft.com/en-us/library/windows/desktop/ms646360(v=vs.85).aspx
答案 1 :(得分:0)
您好,您可以使用form_resize事件触发windowstate以最小化
private void Form1_Resize ( object sender , EventArgs e )
{
if ( WindowState == FormWindowState.Maximized )
{
// minimize it here
}
}