什么时候Windows窗体数据源被破坏?

时间:2014-01-07 14:04:24

标签: c++ winforms visual-studio-2008 c++-cli

我有一个实现System::ComponentModel::INotifyPropertyChanged的类,并用作数据源。称之为SourceThing。假设它有一个名为String的{​​{1}}属性。它被绑定到Windows Forms控件,如下所示:

Data

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

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

1 个答案:

答案 0 :(得分:0)

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

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

希望有所帮助