C# 在win32中显示并切换到窗口

C# 在win32中显示并切换到窗口,c#,winforms,winapi,C#,Winforms,Winapi,我有一个有时需要显示的子窗口。在我的winform项目中,这个窗口可以以某种方式聚焦于用户。我尝试了mywindow.focus(),但没有成功。所以我想用win32 api来显示这个窗口。我听到这样的声音: [DllImport("User32")] public static extern void SwitchToThisWindow(IntPtr hWnd, bool fAltTab); public static void ShowAndSwitchWindow(IntP

我有一个有时需要显示的子窗口。在我的winform项目中,这个窗口可以以某种方式聚焦于用户。我尝试了
mywindow.focus()
,但没有成功。所以我想用win32 api来显示这个窗口。我听到这样的声音:

[DllImport("User32")]
 public static extern void SwitchToThisWindow(IntPtr hWnd, bool fAltTab);

     public static void ShowAndSwitchWindow(IntPtr MainWindowHandle)
     {
   ShowWindow(MainWindowHandle.ToInt32(), SW_MAXIMIZE);
   SwitchToThisWindow(MainWindowHandle, true);
      }
但我不明白如何在我的项目中使用它

我的窗口是这样的:(记住这不是主窗口。此窗口是从另一个名为MainWindow的窗口调用的)

我不习惯使用win32 api。
有人能帮我吗

应该只调用SetForegroundWindow和ShowWindow(),而不是ShowWindow()

s.Show()
应使窗口可见,如果它是当前活动窗口的模态,则应使其具有焦点。IMO说,强迫它拥有焦点是一件坏事,因为您的用户可能在一个完全不同的应用程序中,并且可能不喜欢在没有警告的情况下突然将他的键盘输入到您的应用程序中。(这被称为“焦点窃取”。从用户体验的角度来看,这是一个非常糟糕的主意。)
               show_meaning s = new show_meaning(x);
                s.Show();
[DllImport("User32")]
public static extern int SetForegroundWindow(IntPtr hwnd);