Пустое свойство Text в Dispose()




namespace WindowsFormsApp3
{
    public partial class Form1 : Form
    {
        private UserControl1 uc;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            uc = new UserControl1();
            uc.Parent = this;
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            uc.Dispose();
        }
    }
}

namespace WindowsFormsApp3
{
    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();

            Disposed += OnDispose;
        }

        private void OnDispose(object sender, EventArgs e)
        {
            System.Diagnostics.Debug.WriteLine(label1.Text);//выводит пустую строку
        }
    }
}

Почему свойство Text у label1 пустое? :thinking: Остальные свойства же сохраняются.

Какие другие? И зачем это?

Disposed, как понятно из названия, скорее всего вызывается в конце Dispose.
Видимо винапи контрол уже удален, а текст оттуда берется.
Text —> WindowText:
https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/Control.cs,4038
https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/Control.cs,4521

Да в принципе не за чем. Но при дебаге удобно выводить заголовок диспозящегося UserControlа, если он выводился в label.

Ну left, top и остальная гора свойств. Всё доступно, кроме Text.