把主要申请表带到前面
本文关键字:前面 申请表 | 更新日期: 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
}
}