错误C2039:'Dispose'不是'System::Windows::Forms::ErrorProvider'的成员。

6
我正在尝试使用ErrorProvider类来在复选框上显示错误。我能够使用以下代码显示错误:
errorProvider1->SetError(checkBox1,"Error");

但是,当我尝试使用以下代码来处理此 errorProvider 时:

errorProvider1->Dispose();

接下来这行代码出现了错误

error C2039: 'Dispose' : is not a member of 'System::Windows::Forms::ErrorProvider'

这段代码我能够在vc#上成功运行,但无法在vc++上运行;
但是我的需求是在vc++中使用这段代码。
请问有没有人可以告诉我这段代码存在什么问题。
提前感谢。
1个回答

8
根据这篇文章,在 C++/CLI 中,IDisposable 模式有所不同,您不能实现或调用该语言中的 Dispose() 方法。
相反,您需要使用 delete 运算符。
errorProvider1->SetError(checkBox1,"Error");
delete errorProvider1;  // Equivalent to errorProvider1->Dispose().

2
更好的做法是,使用堆栈语义声明errorProvider1,这样就不需要任何delete调用。 - ildjarn
@Frédéric Hamidi 感谢您的回复,现在它已经正常工作了。 - Mayank Prabhakar
@ildjarn 感谢您的回复... 我该如何使用具有堆栈语义的 errorProvider1。您能解释一下或给出任何示例吗? - Mayank Prabhakar
@MayankPrabhakar:您需要展示errorProvider1是在哪里以及如何声明的。例如,如果它是在类范围内声明的,答案将与在块范围内声明的不同。:-] - ildjarn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接