? ?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 了
//以上代碼是部分代碼? 還有許多命名不正確的 以及多余沒用的大家不用管,我復制過來的,改了很多次我沒刪 能成功運行的 看著不舒服而已
添加回答
舉報
0/150
提交
取消