一尘不染

显示表格而不会失去焦点?

c#

我正在使用一个表单来显示通知(它显示在屏幕的右下角),但是当我显示此表单时,它会从主表单中夺走焦点。有没有一种方法可以显示这种“通知”形式而不窃取焦点?


阅读 253

收藏
2020-05-19

共1个答案

一尘不染

嗯,仅仅覆盖Form.ShowWithoutActivation还不够吗?

protected override bool ShowWithoutActivation
{
  get { return true; }
}

而且,如果您也不希望用户单击此通知窗口,则可以覆盖CreateParams:

protected override CreateParams CreateParams
{
  get
  {
    CreateParams baseParams = base.CreateParams;

    const int WS_EX_NOACTIVATE = 0x08000000;
    const int WS_EX_TOOLWINDOW = 0x00000080;
    baseParams.ExStyle |= ( int )( WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW );

    return baseParams;
  }
}
2020-05-19