下面一个代码运行,老是报错,请问应该怎么改呢?
“未将对象引用设置到对象的实例。”
private void button1_Click(object sender, EventArgs e)
{
foreach (Component comp in this.components.Components)
{
if (comp != null)
{
MessageBox.Show(comp.GetType().Name);
}
}
}
------解决思路----------------------
要么是你的 this.components为null
要么是 this.components.Components 为null···
------解决思路----------------------
this.components是组件的容器,如果你的窗体没有组件,components一直保持为null。
窗体有没有组件简单的判断方法:找到相应Designer.cs,在里面搜components,如果只能搜到两处,表明你的窗体没有组件。
Button、Label、TextBox不是组件
Timer是组件
也就是:他是管理组件的一个容器。
------解决思路----------------------
如果没有组件,components属性值为 null。所以你需要先判断一下是不是 null。
不是说什么要“try....catch”。这种方式就是“只找解决办法却不思考原因。(其实是只找糊弄办法,而不是真正解决办法)
你的代码的逻辑应该这样设计
if( this.components== null)
MessageBox.Show(”木有主见!"));
else
{
foreach (Component comp in this.components.Components)
{
MessageBox.Show(comp.GetType().Name);
}
}