当 this,toplevel 值改变时创建一个事件
Create an Event for when this,toplevel value changes
我希望我的应用程序始终位于最前面。因此,当我打开一个新程序时,即使我将 this.TopLevel 值设置为 true,该程序也会出现在顶部,应用程序将看到它不再位于顶部,然后返回顶部。
我知道我可以用定时器来做到这一点,但我希望他们是更好的方法。
我建议您赶上新 windows 的活动,看看在新 window 开放后您是否处于领先地位:
您可以使用位于 user32.dll
中的方法。
using System.Runtime.InteropServices;
您将需要这些变量:
private static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
private const UInt32 SWP_NOSIZE = 0x0001;
private const UInt32 SWP_NOMOVE = 0x0002;
private const UInt32 TOPMOST_FLAGS = SWP_NOMOVE | SWP_NOSIZE;
从 DLL 导入方法...
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
然后在您的代码中,使用它来将 window 位置设置到最顶端 window。
SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);
希望对您有所帮助!
我希望我的应用程序始终位于最前面。因此,当我打开一个新程序时,即使我将 this.TopLevel 值设置为 true,该程序也会出现在顶部,应用程序将看到它不再位于顶部,然后返回顶部。 我知道我可以用定时器来做到这一点,但我希望他们是更好的方法。
我建议您赶上新 windows 的活动,看看在新 window 开放后您是否处于领先地位:
您可以使用位于 user32.dll
中的方法。
using System.Runtime.InteropServices;
您将需要这些变量:
private static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
private const UInt32 SWP_NOSIZE = 0x0001;
private const UInt32 SWP_NOMOVE = 0x0002;
private const UInt32 TOPMOST_FLAGS = SWP_NOMOVE | SWP_NOSIZE;
从 DLL 导入方法...
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
然后在您的代码中,使用它来将 window 位置设置到最顶端 window。
SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);
希望对您有所帮助!