В моем заявлении есть две формы MainForm
и HexCompare
.Если я щелкаю свое приложение в другом окне, то я нажимаю на одну из двух форм, и только одна из них выходит вперед.Как я могу сделать так, чтобы, если я щелкну по одной из двух форм, она выведет обе наверх всех открытых форм в приложении?Сейчас мне нужно выбрать каждую форму по отдельности, чтобы они попали на вершину моего стека окон (и это может быть очень раздражающим из-за того, что HexCompare
имеет ShowInTaskbar
, установленный на false
Хороший пример того, как я хочу работать, - это то, как работает большинство диалогов поиска. Если щелкнуть диалоговое окно поиска, оно выводит основную форму на передний план, если она скрыта другим приложением, и если щелкает основная форма в диалоговом окне поиска.придет на передний план, если он будет скрыт другим приложением.
Как вызывается MainForm
.
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
Как вызывается 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);
}
РЕДАКТИРОВАТЬ:
Кажется, что HexCompare
значение Parent
равно Null
. Если бы я мог как-то установить его на MainForm
, это решило бы мою проблему, и если да, то как мне установить его?
EDIT2:
Я частично решил ее, используя решение Тиграна, но он вызывает мерцание, когда каждая форма выводится на передний план, если есть лучшее решение, которое я все еще заинтересован.
//In MainForm.cs
private void MainForm_Activated(object sender, EventArgs e)
{
hexCompare.BringToFront();
this.BringToFront();
}
//in HexCompare.cs
private void HexCompare_Activated(object sender, EventArgs e)
{
parent.BringToFront();
this.BringToFront();
}