c# - 在 WPF 中将窗口置于最前面

标签 c# .net wpf winapi pinvoke

如何将我的 WPF 应用程序置于桌面前端?到目前为止,我已经尝试过:

SwitchToThisWindow(new WindowInteropHelper(Application.Current.MainWindow).Handle, true);

SetWindowPos(new WindowInteropHelper(Application.Current.MainWindow).Handle, IntPtr.Zero, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);

SetForegroundWindow(new WindowInteropHelper(Application.Current.MainWindow).Handle);

它们都没有完成工作(Marshal.GetLastWin32Error() 表示这些操作已成功完成,并且每个定义的 P/Invoke 属性都具有 SetLastError=true).

如果我创建一个新的空白 WPF 应用程序,并使用计时器调用 SwitchToThisWindow,它会完全按预期工作,所以我不确定为什么它在我的原始情况下不起作用。

编辑:我正在结合全局热键执行此操作。

最佳答案

myWindow.Activate();

尝试将窗口置于前台并激活它。

这应该可以解决问题,除非我误解了您想要始终在最前面的行为。在那种情况下你想要:

myWindow.TopMost = true;

关于c# - 在 WPF 中将窗口置于最前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/257587/

相关文章:

c# - 以矩阵格式打印二维数组

c# - 成员在另一个模块中声明,需要导入

c# - 如何以编程方式将 sectionGroup 添加到 web.config

.net - 使用 InvariantCulture(2 位数年份)将 "12/25/35"解析为日期

c# - "DATATABLE"的数据表过滤方法

c# - 如何使用多线程在 C# 中实现分治算法?

.NET COMException 接口(interface)未注册

.net - 如何在 WPF 中创建基页?

wpf - Caliburn - 异常处理和救援

wpf - 在 Visual Studio 2008 XAML 设计器中引用嵌套类型