我正在尝试制作一个提供地震式下拉式HUD控制台的应用程序.我可以让它显示和隐藏窗口,但我无法弄清楚如何在显示它之后将其设置为活动窗口.我使用Win API调用来显示和隐藏窗口.我试过SetForegroundWindow(IntPtr hWnd)和SetFocus(IntPtr hWnd)无济于事.有人有主意吗?
public void ShowApp() { IntPtr h = FindWindow(null,"C:\\Windows\\system32\\cmd.exe"); ShowWindow(h,SW_SHOW); //EnableWindow(h,true); isHidden = false; // set focus to console window SetForegroundWindow(h); System.Diagnostics.Debug.WriteLine(h); }
解决方法
我在这里找到了答案:
How to show form in front in C#
How to show form in front in C#
winAPI方法对我来说不正常但是这样做:
form.TopMost = true; form.TopMost = false;
我最初只是将TopMost设置为true,但是我遇到了显示在表单后面的对话框的问题.似乎将TopMost设置为true会将表单拉到前面并将其保留在那里.将其设置为false不会将其推回,但允许其他表单显示在前面.我仍然有焦点问题所以我最终得到以下内容:
form.Activate();