何时销毁 Windows 窗体数据源

When Is a Windows Forms Data Source Destructed?

本文关键字:数据源 窗体 Windows 何时销      更新时间:2023-10-16

我有一个实现System::ComponentModel::INotifyPropertyChanged并用作数据源的类。 称之为SourceThing.假设它有一个名为 DataString属性。 它绑定到 Windows 窗体控件,如下所示:

SourceThing ^ mySourceThing = gcnew SourceThing();
myTextbox->DataBindings->Add("Text", mySourceThing, "Data");

绑定按预期工作。 但是,即使释放了包含文本框的窗口(即,调用窗口的析构函数,但永远不会销毁SourceThing实例),也不会调用SourceThing析构函数。 我可以使析构函数在SourceThing上运行的唯一方法是使用句柄上的delete运算符。 我宁愿不必保留所有数据源的句柄,因为似乎应该在销毁表单时自动销毁它们。

应用程序将根据用户操作多次创建和处置此特定表单,并且有很多SourceThing实例浮动并不理想。 为什么在销毁窗体时不调用 SourceThing 析构函数?

不确定这一点,但我想编译器在C++ CLI 类中定义析构函数时会创建一个Dispose()方法。

如果是这种情况,您应该在表单关闭时调用mySourceThing->Dispose()

希望对你有帮助