我在我的应用程序有两种形式MainForm和HexCompare.如果我点击我的应用程序到另一个窗口然后我点击两个表单中的一个,只有其中一个来到前面.如果我单击两个表单中的任何一个表单,它将如何使其成为应用程序中所有打开表单的顶部?现在我需要单独选择每个表单以使它们到我的窗口堆栈的顶部(这可能非常烦人,因为HexCompare已经ShowInTaskbar设置为false
一个很好的例子就是我想要的方式是大多数查找对话框的工作方式.如果单击查找对话框,则如果主窗体被另一个应用程序隐藏,则它会将主窗体带到前面;如果单击主窗体,则如果另一个应用程序隐藏了查找对话框,则它将出现在前面.
如何MainForm调用.
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
Run Code Online (Sandbox Code Playgroud)
如何HexCompare调用
private void lstCaputres_SelectedIndexChanged(object sender, EventArgs e)
{
var selectedItem = (Tuple<DateTime, byte[]>)lstCaputres.SelectedItem;
if (hexCompare == null || hexCompare.IsDisposed)
{
hexCompare = new HexCompare(selectedItem.Item2);
hexCompare.Show();
}
else
hexCompare.ChangeValue(selectedItem.Item2);
}
Run Code Online (Sandbox Code Playgroud)
编辑:
似乎HexCompare价值Parent是Null.如果我能以某种方式设置它来MainForm解决我的问题,如果是这样我该怎么设置它?
EDIT2:
我已经使用Tigran的解决方案对其进行了半解决,但是如果有更好的解决方案我仍然感兴趣,它会导致闪烁,因为每个表单都会被带到前面.
//In MainForm.cs
private void MainForm_Activated(object sender, EventArgs e)
{
hexCompare.BringToFront();
this.BringToFront();
}
//in …Run Code Online (Sandbox Code Playgroud)