c#中如何给Label动态赋值?
我有一个form,form上有若干个Label,label的值我从后台循环取,然后赋值假设我有两个label要赋值,我也知道这两个label的名称,但是有什么办法能动态的...
我有一个form,form上有若干个Label,label的值我从后台循环取,然后赋值
假设我有两个label要赋值,我也知道这两个label的名称,但是有什么办法能动态的根据这个label名称.text的方式把值赋上去?不能写死,或者如果有其他的赋值思路也可以提供下,跪等 展开
假设我有两个label要赋值,我也知道这两个label的名称,但是有什么办法能动态的根据这个label名称.text的方式把值赋上去?不能写死,或者如果有其他的赋值思路也可以提供下,跪等 展开
5个回答
展开全部
如果你的lable名称唯一,同时的确存在的话,可以直接用以下方式
this.Controls.Find("Lable名称", false)[0].Text="value";
如果不知道存不存在
Control[] Cons=this.Controls.Find("Lable名称", false);
如果Cons的数量为0 就是没有 不为0 就是有
第2种方式,
this.Controls.OfType<Label>();
返回所有的lable集合,然后遍历就是了。
需要说明的是,this代表的是比lable的直接父级哈!
this.Controls.Find("Lable名称", false)[0].Text="value";
如果不知道存不存在
Control[] Cons=this.Controls.Find("Lable名称", false);
如果Cons的数量为0 就是没有 不为0 就是有
第2种方式,
this.Controls.OfType<Label>();
返回所有的lable集合,然后遍历就是了。
需要说明的是,this代表的是比lable的直接父级哈!
追问
追答
我在上面的回答你还没看懂么?
难道还要我这样给你写你才明白吗?
Lable lable=(lable)groupBox1.Controls.Find("Lable名称", false)[0];
lable.Text="666";
Lable名称就是你知道的某一个lable控件的name属性。
比如你有个Lable的名称为 label_zf,用户是不是勾选了,你自己去判断哈
然后我们去找这个Lable控件
Lable lable=(lable)groupBox1.Controls.Find("label_zf", false)[0];
lable.Text="666";//这就是你想要的那个对象啊。
lable.Enable=true;
lable.......干什么不行啊!!
这个lable对象就是你的label_zf对象!
展开全部
你所谓的动态赋值不是很明白你要表达的意思。
我想你是不是想说有若干个Label要赋值。但是不要一个个赋值根据这个label名称.text的方式值赋。你可以new一个 Label类型的数组,把所有Label加到数组作为数组元素。然后通过for循环赋值。
我想你是不是想说有若干个Label要赋值。但是不要一个个赋值根据这个label名称.text的方式值赋。你可以new一个 Label类型的数组,把所有Label加到数组作为数组元素。然后通过for循环赋值。
追问
追答
你可以在每一个要显示Label控件的地方先添加一个Panel作为容器,调整好大小和位置。
然后通过代码动态添加你需要的Label控件到Panel控件上就行了。
大概原理就是这样,我觉得杨改可以实现你想要的效果。
为了跟好地让你理解我的这套原理,我做了一个小实例来帮我阐释,我想你看了代码和运行效果后应该会有所启发。(实例程序见附件压缩包)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Labelname.Text=“内容”;
放到线程中去执行,不要把主线程阻塞了。你的while循环太长的话会造成界面线程假死。
首先在form的load事件中加入一下内容:
private void Form1_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
//使用另外的线程启动showit函数显示内容
Thread t = new Thread (showit);
t.Start();
}
void showit()
{
int i = 0;
while (i <=10000)
{
label.Text = i;
i++;
}
}
放到线程中去执行,不要把主线程阻塞了。你的while循环太长的话会造成界面线程假死。
首先在form的load事件中加入一下内容:
private void Form1_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
//使用另外的线程启动showit函数显示内容
Thread t = new Thread (showit);
t.Start();
}
void showit()
{
int i = 0;
while (i <=10000)
{
label.Text = i;
i++;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
估计是想让label的值定时变动吧。
设计界面拖一个timer控件过来。你网上学一下timer的用法,挺简单的。
设计界面拖一个timer控件过来。你网上学一下timer的用法,挺简单的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
循环form内的lable吧,这样可以试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询