DialogHelper.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Runtime.InteropServices;
  7. using System.Windows.Interop;
  8. using System.Windows;
  9. namespace AIRS
  10. {
  11. class DialogHelper
  12. {
  13. //从Handle中获取Window对象
  14. static Window GetWindowFromHwnd(IntPtr hwnd)
  15. {
  16. try
  17. {
  18. return (Window)HwndSource.FromHwnd(hwnd).RootVisual;
  19. }
  20. catch
  21. {
  22. return null;
  23. }
  24. }
  25. //GetForegroundWindow API
  26. [DllImport("user32.dll")]
  27. static extern IntPtr GetForegroundWindow();
  28. //调用GetForegroundWindow然后调用GetWindowFromHwnd
  29. static Window GetTopWindow()
  30. {
  31. var hwnd = GetForegroundWindow();
  32. if (hwnd == null)
  33. return null;
  34. return GetWindowFromHwnd(hwnd);
  35. }
  36. //显示对话框并自动设置Owner,可以理解为子窗体添加父窗体
  37. public static void ShowDialog(Window win)
  38. {
  39. win.Owner = GetTopWindow();
  40. win.ShowInTaskbar = false; //false表示不显示新的窗口,默认当前打开窗口为一个子窗口(不会显示两个窗口)
  41. win.ShowDialog();
  42. }
  43. }
  44. }