为了账号安全,请及时绑定邮箱和手机立即绑定

关于winform循环生成控件的问题

关于winform循环生成控件的问题

九州编程 2018-12-07 01:12:16
   for (int i = 0; i < 8; i++)            {                Label a = new Label();                a.Width = 50;                a.Location =new System.Drawing.Point(20,i*20);                           } 我做了一个ping服务器的软件,每一台服务器的ip我启动一个线程去ping 然后ping返回的响应时间作为 lable的长度  ,我可以生成一次清空一次 ,但这样我觉得很浪费 每次都要 new一个label,我觉得服务器比如说5个那个就有5个label对应,我精确定位没个label就改变其长度就可以了,但是问题自动生成的lanbel该如何获取他们的 名字呢 比如上面的a又不能用i来作为label的名字,有谁有思路吗?下面是代码  for (int i = 1; i < 4; i++)            {                ParameterizedThreadStart ts = new ParameterizedThreadStart(new cl(Calculate));                Thread td = new Thread(ts);                MyThreadParameter paramter = new MyThreadParameter("www.baidu.com", i.ToString());                               td.Start(paramter);            }         //四个线程启动  public void Calculate(object ms)        {            MyThreadParameter parameter = ms as MyThreadParameter;            while (true)            {                                                  int a = ping(parameter.Interval);//这个是传递过来的IP                //this.BeginInvoke(new o(other));  //写到ping后再清空groupbox,因为ping会延迟返回值。如果先清空groupbox会造成ping的这段时间label没有显示                this.BeginInvoke(new changeText(CalcFinished), a.ToString(), parameter.LoopCount);                Thread.Sleep(2000);            }        } //根据每个IP的响应时间 做label的长度  public void CalcFinished(string result, string id)        {            if (this.InvokeRequired)            {                this.BeginInvoke(new changeText(CalcFinished), result);            }            else            {                //this.groupBox1.Controls.Clear();                Label textBox1 = new Label();                textBox1.BackColor = System.Drawing.Color.Red;                textBox1.Location = new System.Drawing.Point(20, Convert.ToInt32(id)*40);                textBox1.Text = result;                textBox1.Width = Convert.ToInt32(result) / 10;                this.groupBox1.Controls.Add(textBox1);            }        }     软件界面就是 www.baidu.com    label www.....               label www............       label label 如上每两秒ping一次返回响应时间作为label的长度更新前面服务器对应的lable 如我上面缩写的一次只能显示一个label 因为我要清空groupbox来显示新的label  如果我有lable的name我就直接改变他的长度  而不用去清空 再new 了 //以上代码是部分代码  还有许多命名不正确的 以及多余没用的大家不用管,我复制过来的,改了很多次我没删 能成功运行的 看着不舒服而已
查看完整描述

2 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

label有name的可以循环查找控件然后 获取name对比   做出来了

查看完整回答
反对 回复 2019-01-21
  • 2 回答
  • 0 关注
  • 404 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信