WinForm开发的软件有时候需要在屏幕右下角弹窗进行一些提示,通常使用new MyForm().Show()即可实现此需求。
但是当MyForm显示出来时,会抢走原本窗体上的光标,导致原本在软件上比如打字或者其他操作被中断,非常不人性化,影响用户体验。
那么如何解决这个问题呢?
在窗体中复制如下代码粘贴即可:
cs
protected override bool ShowWithoutActivation
{
get
{
return true;
}
}
如果弹窗需要置顶,那么再额外添加如下代码即可:
cs
protected override CreateParams CreateParams
{
get
{
int WS_EX_TOPMOST = 0x00000008;
CreateParams cp = base.CreateParams;
cp.ExStyle |= WS_EX_TOPMOST;
return cp;
}
}
需要注意的是,不能再给Form的TopMost属性设置成True
参考1:https://stackoverflow.com/questions/156046/show-a-form-without-stealing-focus
参考2:https://stackoverflow.com/questions/686132/opening-a-form-in-c-sharp-without-focus