我有一个WPF应用程序,当鼠标光标移过它时,我想成为当前的焦点窗口。目前我有一个onMouseEnter事件,当鼠标移过它时会改变光标,所以我知道系统正在识别它,但是我真正想要的是应用程序本身变得集中,好像使用的东西已经点击了它 - 所以我然后可以执行其他操作。目前,如果我移动它,光标会改变,但如果另一个应用程序,例如 - 记事本有焦点,焦点将返回到之后。
在onMouseEnter处理程序中,我尝试过“this.Focus()”和“this.Activate()”,但它们都没有像我点击应用程序那样产生相同的效果。
有什么想法吗?
答案 0 :(得分:1)
WPF C#将一个MouseEnter事件附加到Grid控件的示例。如果另一个应用程序窗口具有焦点,它将删除它并将焦点附加到主窗口,就像用户单击它一样。
private void GrdContent_MouseEnter(object sender, MouseEventArgs e)
{
Application.Current.MainWindow.Activate();
}
答案 1 :(得分:0)
编辑:发布的答案不适用于WPF。遗憾。
请尝试查看此内容而不是WPF:http://blogs.msdn.com/nickkramer/archive/2006/03/18/554235.aspx
答案 2 :(得分:0)
在WPF中,只需将此行添加到MainWindow构造函数中即可获得预期的结果。
MouseEnter += (s, e) => Activate();
仅当您不与任何其他窗口交互时,此原始的一行答案才有效。即使在这种情况下,下面的命令也可以使用,但是您需要Nuget程序包“ AutoItX.Dotnet”。
private IntPtr myHandle;
public MainWindow() {
myHandle = new System.Windows.Interop.WindowInteropHelper(this).Handle;
MouseEnter += (s, e) => {
Activate();
if (AutoIt.AutoItX.WinActive(myHandle) == 0)
AutoIt.AutoItX.WinActivate(myHandle);
};