Почему 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?