У меня есть простое приложение для нескольких форм, которое выглядит следующим образом:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Text = "Parent Form";
var childForm = new ChildForm2() { Owner = this };
childForm.Show();
}
}
public class ChildForm2 : Form
{
public ChildForm2()
{
this.Text = "Child Form";
}
}
![demo](https://i.stack.imgur.com/CUBur.png)
В этом сценарии дочерняя форма всегда находится в передняя часть родительской формы. Когда я щелкаю родительскую форму, дочерний объект остается на переднем плане.
Это можно решить, не задав Owner = this
, и приложение будет вести себя точно так, как я хочу, но это создает новую проблему. Я управляю этой программой через другую другую программу C#, используя класс System.Diagnostics.Process
. В нем я вызываю Process.CloseMainWindow
, что позволяет дочернему процессу запускать событие Form.OnClose
и корректно закрываться. Если я не установлю дочернего владельца, родительский процесс просто закроет дочернюю форму, а не всю заявку. Я не нашел другого способа закрыть главное окно.
Как это исправить? Я хочу, чтобы главное окно отображалось на переднем плане, но при этом можно было закрыть все приложение с помощью Process.CloseMainWindow
.