我在表单布局排序(z 顺序)方面遇到了一个奇怪的问题。假设我有三个 Windows 窗体; Form1、Form2 和 Form3。
Form1 作为应用程序的主窗体启动,它有一个将 Form2 作为对话框打开的按钮(使用 ShowDialog()
)。 Form2 也有打开 Form3 的按钮(但不是作为对话框,使用 Show()
)。
一旦打开 Form3,只要单击 Form2,它就会跳到后台(在 Form1 后面)。单击 Form2 时,我希望 Form3 至少保持在 Form1 之上,因为它包含一些有助于处理 Form2 的选项。
我不想使用 Form3.TopMost = True;
因为即使您打开或切换到任何其他应用程序(例如 Windows Explorer、Internet浏览器等)。
.BringToFront()
也没有帮助。我已经尝试了一些相关表单事件与 Form.BringToFront()
、Form.Activate()
等的几种组合,但都是徒劳的。任何帮助将不胜感激。
引用代码如下:
表格 1:
Form2 obj2 = new Form2();
private void button1_Click(object sender, EventArgs e)
{
if (obj2 != null && obj2.Visible) { obj2.Focus(); return; }
obj2 = new Form2();
obj2.ShowDialog();
}
表格 2:
Form3 obj3 = new Form3();
private void button1_Click(object sender, EventArgs e)
{
if (obj3 != null && obj3.Visible) { obj3.Focus(); return; }
obj3 = new Form3();
obj3.Show();
}
最佳答案
尝试这样的事情,可以帮助设置 parent 。
Form3 obj3 = new Form3();
private void button1_Click(object sender, EventArgs e)
{
if (obj3 != null && obj3.Visible) { obj3.Focus(); return; }
obj3 = new Form3();
obj3.Show(this);
}
关于c# - 如何防止将 Windows 窗体发送到后面或如何将其保持在特定的 z 顺序上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20914230/