Winforms无焦点接受键盘输入

时间:2016-05-07 05:04:23

标签: c# .net winforms topmost

所以这就是我想要实现的目标。我有一个简单的聊天winforms应用程序,我希望将其置于全屏的其他应用程序之上,我不希望它采取焦点,但我希望它接受文本框中的用户输入。到目前为止,我已经完成了第一部分,我的聊天应用程序仍然在其他应用程序之上,而没有关注它。这就是我用过的东西:

const int WS_EX_NOACTIVATE = 0x8000000;
protected override CreateParams CreateParams
{
    get
    {
        CreateParams ret = base.CreateParams;
        ret.ExStyle |= WS_EX_NOACTIVATE;
        return ret;
    }
}


public Form1()
{
    InitializeComponent();
    TopMost = true;
}

现在的问题是我无法在文本框中写任何内容。所有按钮都可正常工作,我可以点击它们并触发事件,但文本框不会输入任何内容。

1 个答案:

答案 0 :(得分:0)

在Form类中覆盖此参数,并从代码中删除TopMost = true;。这将起作用,并在尝试编辑文本框时获得关注。

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

private const int WS_EX_TOPMOST = 0x00000008;
protected override CreateParams CreateParams
{
    get
    {
        CreateParams createParams = base.CreateParams;
        createParams.ExStyle |= WS_EX_TOPMOST;
        return createParams;
    }
}

在此处找到:Look at second answer