日期:2014-05-18  浏览次数:20967 次

如何让已经打开的form窗体再次点击打开此窗体时让其显示在最上层?
求助!!当form子窗体已经打开,并且不是位于最上层,也没有最小化,而是被最上层的窗体覆盖住了。当再次点击打开此窗体的按钮时,怎么让其显示在最上层?我现在再次点击打开时,没有反应。
例如:有两个form,分别是form1,form2,此时form1,form2都已经打开,并且form1位于form2的后面,被form2挡住,看不到了。我用button1控制form1的打开,现在再点击button1,form1不能显示在最上层,即当前画面还是form2的。前提是我有判断主窗体中若有form1,则窗体中不再打开form1。

------解决方案--------------------
public void MakeOnTop()
{
myTopForm.TopMost = true;
}
------解决方案--------------------
Form.BringToFront();
------解决方案--------------------
Form.TopMost = true;
------解决方案--------------------
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}

private Form2 f2;//子窗体
private Form3 f3;//子窗体

private void button1_Click(object sender, EventArgs e) {
if (null == f2 || f2.IsDisposed) {
f2 = new Form2();
f2.Show();
} else {
f2.Activate();
}
}

private void button2_Click(object sender, EventArgs e) {
if (null == f3 || f3.IsDisposed) {
f3 = new Form3();
f3.Show();
} else {
f3.Activate();
}
}
}
------解决方案--------------------
if (null == f2 || f2.IsDisposed) {
f2 = new Form2();
f2.Show();
} else {
f2.Activate();
}
把这些代码封装在DLL中,等于在DLL中开放一个接口让你打开窗体。就是说某个窗体的打开由它所在的DLL进行管理
------解决方案--------------------
刚试了下,对于调用DLL文件一样管用。
------解决方案--------------------
Form.TopMost = true;
------解决方案--------------------
探讨
Form.TopMost = true;

------解决方案--------------------
assemblyFile=Application.StartupPath + "\\" + ds.Tables[0].Rows[0]["assemblyFile"].ToString();
formName=ds.Tables[0].Rows[0]["formName"].ToString();

//单一加载窗体
for (int i = 0; i < Application.OpenForms.Count; i++)
{
if (Application.OpenForms[i].GetType().ToString() == formName)
{
Application.OpenForms[i].Activate();
return;
}
}