更改最小化视觉效果
Change Minimizing Visual Effect
我创建了一个不可见形式的应用程序。 (不透明度 = 0 或可见性 = false ShowInTaskbar = false)
我尝试了很多不同的方式来激活我的表单,同时激活其他应用程序。 "activating" 我的意思是在不让它可见的情况下给予它焦点。由于某种原因,Activate() 和 Focus() 方法没有按预期工作。根据 MSDN (https://msdn.microsoft.com/en-us/library/system.windows.forms.form.activate%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396),如果表单未最小化,Activate() 方法应该引起 window 的焦点,但它不起作用。
我发现激活(聚焦)我的 window 的唯一方法是将其最小化,然后 return 将其状态设为正常。它工作得非常完美,但还有另一个问题:对于 Windows XP,它会导致 window 的最小化和最大化的持续效果,即使它是不可见的。有没有办法让这个效果只对我的表单不可见?
现在这个效果是这样的:
根据我遇到的确切补充问题(我想有那些效果,但它们没有用),我认为这可以解决你的问题:
将表格 BorderStyle
更改为 none
怎么样?
在最小化调用之前:
this.FormBorderStyle = FormBorderStyle.None;
最大化后:
this.FormBorderStyle = FormBorderStyle.FixedSingle;
这将 winform 解析为既没有 minimize
也没有 maximize
也没有 restore
也没有 aerial
效果。
因此它可能解决错误的minimize/maximize效果。
好的,我设法找到了问题的答案,非常相似的问题已经出现在 Stack Overflow 上,我的错:Is it possible to disable animation when minimizing / restoring window?
简而言之,您只需要通过以下方式捕获最小化系统消息:
protected override void WndProc(ref Message m) {
// Catch WM_SYSCOMMAND, SC_MINIMIZE
if (m.Msg == 0x112 && m.WParam.ToInt32() == 0xf020) {
this.Hide();
this.WindowState = FormWindowState.Minimized;
this.BeginInvoke(new Action(() => this.Show()));
return;
}
base.WndProc(ref m);
}
我创建了一个不可见形式的应用程序。 (不透明度 = 0 或可见性 = false ShowInTaskbar = false) 我尝试了很多不同的方式来激活我的表单,同时激活其他应用程序。 "activating" 我的意思是在不让它可见的情况下给予它焦点。由于某种原因,Activate() 和 Focus() 方法没有按预期工作。根据 MSDN (https://msdn.microsoft.com/en-us/library/system.windows.forms.form.activate%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396),如果表单未最小化,Activate() 方法应该引起 window 的焦点,但它不起作用。
我发现激活(聚焦)我的 window 的唯一方法是将其最小化,然后 return 将其状态设为正常。它工作得非常完美,但还有另一个问题:对于 Windows XP,它会导致 window 的最小化和最大化的持续效果,即使它是不可见的。有没有办法让这个效果只对我的表单不可见?
现在这个效果是这样的:
根据我遇到的确切补充问题(我想有那些效果,但它们没有用),我认为这可以解决你的问题:
将表格 BorderStyle
更改为 none
怎么样?
在最小化调用之前:
this.FormBorderStyle = FormBorderStyle.None;
最大化后:
this.FormBorderStyle = FormBorderStyle.FixedSingle;
这将 winform 解析为既没有 minimize
也没有 maximize
也没有 restore
也没有 aerial
效果。
因此它可能解决错误的minimize/maximize效果。
好的,我设法找到了问题的答案,非常相似的问题已经出现在 Stack Overflow 上,我的错:Is it possible to disable animation when minimizing / restoring window?
简而言之,您只需要通过以下方式捕获最小化系统消息:
protected override void WndProc(ref Message m) {
// Catch WM_SYSCOMMAND, SC_MINIMIZE
if (m.Msg == 0x112 && m.WParam.ToInt32() == 0xf020) {
this.Hide();
this.WindowState = FormWindowState.Minimized;
this.BeginInvoke(new Action(() => this.Show()));
return;
}
base.WndProc(ref m);
}