C# 控件名引用问题

在程序中需要引用一组控件,就给控件名做了一个数组,可是运行的时候总是提醒说未将对象引用设置到对象的实例,可是控件都是直接拖拽到窗体里的,应该自动生成声明什么的呀,而且看了... 在程序中需要引用一组控件,就给控件名做了一个数组,可是运行的时候总是提醒说未将对象引用设置到对象的实例,可是控件都是直接拖拽到窗体里的,应该自动生成声明什么的呀,而且看了一下Designer.cs文件,里面确实也有,请哪位大师给指点指点吧。 展开
 我来答
然后去远足
2014-03-20 · TA获得超过1万个赞
知道大有可为答主
回答量:4016
采纳率:83%
帮助的人:2423万
展开全部

把 this.Controls.[PN[i]] 改成:

((Label)(this.FindControl(PN[i])))

 

【补充】

啊,Winform 啊,等会儿,不是这么写了,我想想……

 

【再次补充】

思路就是先遍历窗体上控件,如果 Name 和你数组里存的一致就赋值,跳出循环,参考:

foreach (Control ctrl in this.Controls)
{
    if (ctrl is Label && ctrl.Name = PN[i])
    {
        ((Label)ctrl).Text = dt.Rows[i]["飞机号"].ToString()
        break;
    }   
}
追问
&&不能应用于bool和string类型操作数。
追答
= 换成 ==
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
syht2000
高粉答主

2014-03-20 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部

不能这样写,如果控件不是很多,你的数组应该改成

Label[] PN=new Label[]{lb_PN1,lb_PN2,lb_PN3,lb_PN4};
Label[] SN=new Label[]{lb_SN1,lb_SN2,lb_SN3,lb_SN4};

然后你用的时候就可以直接赋值PN[i].Text="xxxx";PN[i].Visible=true;

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
澤希Dc
2014-03-20 · TA获得超过1747个赞
知道小有建树答主
回答量:509
采纳率:0%
帮助的人:255万
展开全部
Winform里的FindControl应该这样写:
Control[] col = this.Controls.Find(PN[i], false);
if (col != null)
{
Label lb = col[0] as Label;
lb.Text = dt.Rows[i]["飞机号"].ToString();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式