我在Windows应用程序中完成了一个全局鼠标事件。当我点击鼠标的中心按钮时,我想制作一个特定的表格最顶层...
有些应用程序在全屏模式下运行,所以我需要这样做,以便让我的表单对用户可见,因为这是查看它的唯一方法。由于Alt + Tab已禁用。这是一个Kiosk应用程序。
我尝试将Topmost = true用于该特定形式 我尝试使用下面的代码...但没有用。我不在前面。
[DllImport("User32.dll")]
public static extern Int32 SetForegroundWindow(int hWnd);
[DllImport("user32.dll")]
public static extern int FindWindow(string lpClassName, string lpWindowName);
private void BringToFront(string className,string CaptionName)
{
SetForegroundWindow(FindWindow(className,CaptionName));
}
必须触发这种形式才能带来前沿的全球热键才能完美运作。
如何让我的表格出现?感谢。
答案 0 :(得分:4)
我解决了这个问题:
this.TopMost = true;
this.TopMost = false;
答案 1 :(得分:3)
不是我的事,但你试过搞乱:
this.BringToFront();
this.Activate();
答案 2 :(得分:2)
获取窗口的句柄并执行此操作
SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
答案 3 :(得分:0)
您需要将全屏表单的最顶层设置为false,然后继续。
答案 4 :(得分:0)
您可能无法正确调用BringToFront方法。对于FindWindow API函数,lpClassName将是您的应用程序的名称(例如“MyApplication.exe”),而lpWindowName是指特定表单标题栏中的标题(例如“Form1”)。通常使用FindWindow传递一个或另一个,例如:
FindWindow("MyApplication.exe", null);
// or
FindWindow(null, "Form1");
我不确定当你同时通过时会发生什么。
您可能还需要做一些简单的事情来实现这一点,比如调用特定表单的Activate()方法。