1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Runtime.InteropServices;
- using System.Windows.Interop;
- using System.Windows;
- namespace AIRS
- {
- class DialogHelper
- {
- //从Handle中获取Window对象
- static Window GetWindowFromHwnd(IntPtr hwnd)
- {
- try
- {
- return (Window)HwndSource.FromHwnd(hwnd).RootVisual;
- }
- catch
- {
- return null;
- }
- }
- //GetForegroundWindow API
- [DllImport("user32.dll")]
- static extern IntPtr GetForegroundWindow();
- //调用GetForegroundWindow然后调用GetWindowFromHwnd
- static Window GetTopWindow()
- {
- var hwnd = GetForegroundWindow();
- if (hwnd == null)
- return null;
- return GetWindowFromHwnd(hwnd);
- }
- //显示对话框并自动设置Owner,可以理解为子窗体添加父窗体
- public static void ShowDialog(Window win)
- {
- win.Owner = GetTopWindow();
- win.ShowInTaskbar = false; //false表示不显示新的窗口,默认当前打开窗口为一个子窗口(不会显示两个窗口)
- win.ShowDialog();
- }
- }
- }
|