当前位置 : 主页 > 网络编程 > net编程 >

C#WPF设置父子类窗体关系

来源:互联网 收集:自由互联 发布时间:2023-08-25
/// summary /// 根据子窗体自动获取父类窗体,并建立父子关系 /// /summary /// param name="window"子窗体/param public static void SetOwner(System.Windows.Window childWindow) { Action defaultSetOwner = new Action(() = {

  /// <summary>

       /// 根据子窗体自动获取父类窗体,并建立父子关系

       /// </summary>

       /// <param name="window">子窗体</param>

       public static void SetOwner(System.Windows.Window childWindow)

       {

           Action defaultSetOwner = new Action(() =>

           {

               IntPtr parentHandler = Process.GetCurrentProcess().MainWindowHandle;

               SetOwner(childWindow, parentHandler);

           });

           try

           {

               var hwnd = GetForegroundWindow();

               if (hwnd != null)

               {

                   var source = HwndSource.FromHwnd(hwnd);

                   if (null != source)

                   {

                       ///WPF窗体

                       var wnd = (System.Windows.Window)source.RootVisual;

                       childWindow.Owner = wnd;

                       childWindow.WindowStartupLocation = WindowStartupLocation.CenterOwner;

                   }

                   else

                   {

                       ///非WPF窗体

                       defaultSetOwner();

                   }

               }

               else

               {

                   defaultSetOwner();

               }

           }

           catch (Exception)

           {

               defaultSetOwner();

           }

       }

网友评论