Дочерняя форма всегда перед родителем в Win Forms - PullRequest
1 голос
/ 27 февраля 2020

У меня есть простое приложение для нескольких форм, которое выглядит следующим образом:

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

В этом сценарии дочерняя форма всегда находится в передняя часть родительской формы. Когда я щелкаю родительскую форму, дочерний объект остается на переднем плане.

Это можно решить, не задав Owner = this, и приложение будет вести себя точно так, как я хочу, но это создает новую проблему. Я управляю этой программой через другую другую программу C#, используя класс System.Diagnostics.Process. В нем я вызываю Process.CloseMainWindow, что позволяет дочернему процессу запускать событие Form.OnClose и корректно закрываться. Если я не установлю дочернего владельца, родительский процесс просто закроет дочернюю форму, а не всю заявку. Я не нашел другого способа закрыть главное окно.

Как это исправить? Я хочу, чтобы главное окно отображалось на переднем плане, но при этом можно было закрыть все приложение с помощью Process.CloseMainWindow.

1 Ответ

0 голосов
/ 27 февраля 2020

Полагаю, вы должны явно указать это в своем приложении. Вы должны реализовать, что приложение закрывает все windows, если предполагается, что главное окно закрыто. Если у вас есть немодальный windows (который вы, очевидно, хотите), вы должны явно закрыть его, когда закроется главное окно, чтобы правильно закрыть приложение. Обратите внимание, что если дочернее окно является модальным, вы обычно не можете закрыть главное окно перед закрытием дочернего окна - это предполагаемое поведение пользовательского интерфейса.

Конечно, вы всегда можете убить (принудительно прекратить) приложение, но это может привести к потере данных или другим нежелательным последствиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...