把主要申请表带到前面

本文关键字:前面 申请表 | 更新日期: 2023-09-27 18:11:26

我正在紧凑型框架3.5上工作,有这个问题。ScanOutMenu是一个有两个按钮的表单,只有在这个屏幕上BringToFront()不工作。在所有其他屏幕,我有输入字段,它得到焦点和BringToFront()采取形式在前面。

private void menuItem1_Click(object sender, EventArgs e)
{
    this.Close();
    ScanOutMenu scanOutMenu = new ScanOutMenu();
    scanOutMenu.BringToFront();
}

我也尝试了scanOutMenu.TopMost = true;,这也不工作。我认为由于ScanOutMenu表单没有输入字段和没有焦点BringToFront()不工作。

ScanOutMenu表单是主要的应用程序表单,我需要把屏幕放在前面,而不使用scanOutMenu.Show()scanOutMenu.ShowDialog()

把主要申请表带到前面

你试过启用TopMost属性吗?

this.TopMost = true;
//then if you want to remove it just put to false

在开发CE应用程序时,你迟早要亲自动手处理Windows API调用。SetForegroundWindow可以做你想做的

// Import the API call
[DllImport("coredll.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
// Then, in your code somewhere
SetForegroundWindow(scanOutMenu.Handle);

查看API文档:http://msdn.microsoft.com/en-us/library/ms940024.aspx

如果您已经打开了它,那么您需要将打开的对象带到前面。在这个例子中,你展示了你将一个尚未显示的对象放在前面。

ScanOutMenu scanOutMenu = new ScanOutMenu(); // Creates a new object
scanOutMenu.BringToFront(); //Brings to front the Object that is not shown.

因此,要打开它,你必须为你想要打开的窗体创建一个非局部变量,并将该变量指定为你想要打开的窗体。

的例子:

class test{
AnotherForm op;
public test(){
  AnotherForm nForm = new AnotherForm(); //Starts a form object
  op = nForm; // Assigns the form to be shown to the non-local variable
  nForm.Show(); // shows the form object to user
}
private void menuItem1_Click(object sender, EventArgs e)
{
  op.BringToFront(); //This will work
}
}