本文介绍了C#中删除动态创建的对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想删除所有动态创建的对象[在这种情况下,标签和trackbars]
I would like to remove all dynamically created object [ in this case, labels and trackbars ]
foreach (Label Labels in Controls.OfType<Label>())
{
if (Labels.Tag.ToString() != "non-disposal"){
Labels.Dispose();
}
}
我想这一点,但我得到一个错误说对象引用未设置到对象的实例。
I tried this, but i get an error saying "Object reference not set to an instance of an object."
感谢您,
解决方案
foreach (Label label in Controls.OfType<Label>()){
if (label.Tag != null && label.Tag.ToString() == "dynamic")
label.Dispose();
由于lazyberezovsky
thanks to lazyberezovsky
推荐答案
添加到所有动态控制某些标签
,例如: 动态
。然后,处理它们是这样的:
Add to all dynamic controls some Tag
, e.g. "dynamic"
. Then dispose them this way:
foreach (Label label in Controls.OfType<Label>())
{
if (label.Tag != null && label.Tag.ToString() == "dynamic")
label.Dispose();
}
看起来有些标签没有标记
分配。这就是为什么你有一个例外,试图调用的ToString()
在空
。
Looks like some label do not have Tag
assigned. That's why you've got an exception trying to call ToString()
on null
.
这篇关于C#中删除动态创建的对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!