所以这就是我想要实现的目标。我有一个简单的聊天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;
}
现在的问题是我无法在文本框中写任何内容。所有按钮都可正常工作,我可以点击它们并触发事件,但文本框不会输入任何内容。
答案 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