Почему Owner формы после обнуления возвращается?

Если Owner'а формы установить принудительно, то при обнулении его на этапе закрытия формы значение обнуляется, но потом снова восстанавливается.

Краткий пример:

public partial class Form1 : Form
{
    static int cloneNum = 0;
    public Form1()
    {
        Text = $"Click for clone ({cloneNum++})";

        this.Click += (s, e) => {
            var f = (new Form1());
            this.AddOwnedForm(f); // 1. Присваиваем владельца, можно f.Owner = this; 
            f.FormClosed += F_FormClosed;
            f.ShowDialog(); // 3. Отображаем и закрываем окно
            f.Owner = null; // 4. f.Owner вернулся обратно!!!
        };
    }

    private void F_FormClosed(object sender, FormClosedEventArgs e)
    {
        if (sender is Form f && f.Owner != null) 
            f.Owner.RemoveOwnedForm(f); // 2. Убираем Owner'а. Можно f.Owner=null, смысл тот же
    }
}

Пояснения в комментариях. Если установить breakpoint'ы в пунктах 2 и 4, можно увидеть, что обнуление Owner'а в пункте 2 позже отменяется где-то в недрах ОС (Подозреваю, что только в Win10, хотя в других версиях проверить возможности нет).

Поясните, пожалуйста, с какой целью восстанавливается Owner?


Ответы (0 шт):