如何在Windows应用程序中使用c#完成一个Windows窗体?

时间:2009-09-28 02:05:50

标签: c# .net winforms

我在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));
    }

必须触发这种形式才能带来前沿的全球热键才能完美运作。

如何让我的表格出现?感谢。

5 个答案:

答案 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()方法。