如題
private void btn_st[/code]art_Click(object sender, EventArgs e)
{
UI_unvisible();
DrawGame();
AddLabel();
}
private void DrawGame()
{
Graphics g = CreateGraphics();
Pen pen = new Pen(Color.DarkOrange, 3);
Rectangle rMax = new Rectangle(195, 195, 210, 210);
Rectangle[] r = new Rectangle[16];
for (int i = 0; i < 16; i++)
{
r[i].X = 205 + (i % 4) * 50;
r[i].Y = 205 + (i / 4) * 50;
r[i].Width = 40;
r[i].Height = 40;
g.DrawRectangle(pen, r[i]);
}
g.DrawRectangle(pen, rMax);
}
public void AddLabel()
{
for (int i = 0; i < 16; i++)
{
Label l = new Label();
l.Name = "labNum_" + i.ToString();
l.Font = new Font("黑體", 15);
l.Text = "2";
l.Location = new Point(215 + (i % 4) * 50, 215 + (i / 4) * 50);
l.Size = new Size(20, 20);
this.Controls.Add(l);
}
}
怎么在別個函式內 呼叫 添加的控制元件 l 并修改l的屬性
uj5u.com熱心網友回復:
l.Name = "labNum_" + i.ToString();既然如此
可以用
Label l = (表單.Controls["labNum_數字"] as Label);
l.Text = xxx;
uj5u.com熱心網友回復:
如果是個別控制元件,參#1,如果是全部,可以這樣:
this.Controls.OfType<Label>().ToList().ForEach(f =>
{
f.BackColor = Color.LightCyan; // 修改背景色
});
uj5u.com熱心網友回復:
我能在別的函式中 比如 DrawGame() 中 使用 labNum_[i].Text = "xx"; 修改其屬性嗎?uj5u.com熱心網友回復:
只要是在同一個類中就可以。創建的label是私有的,在其他類中參考不到!
uj5u.com熱心網友回復:
結果不讓我參考阿 怎么辦?
uj5u.com熱心網友回復:
你這樣寫,系統判斷當前不存在這個labNum_3這個控制元件,就報錯了。你可以查Controls中查找出型別為label的 并且順序為第三個的,再去修改它
uj5u.com熱心網友回復:
你這樣寫,系統判斷當前不存在這個labNum_3這個控制元件,就報錯了。
你可以查Controls中查找出型別為label的 并且順序為第三個的,再去修改它
我突然想到用泛型的方法 將控制元件存到泛型型別中 但是怎么在表單中輸出 存在 泛型中的控制元件。。
謝謝大神指導 本人新手一枚
uj5u.com熱心網友回復:
我能在別的函式中 比如 DrawGame() 中 使用 labNum_[i].Text = "xx"; 修改其屬性嗎?
只要是在同一個類中就可以。創建的label是私有的,在其他類中參考不到!
結果不讓我參考阿 怎么辦?
我把代碼都寫給你了,可你還在用你自己的代碼
uj5u.com熱心網友回復:
((Label)this.Controls["lblNum_3"]).Text = "1";uj5u.com熱心網友回復:

uj5u.com熱心網友回復:
我也來學習一下,大神真是多啊。uj5u.com熱心網友回復:
Label label = 容器控制元件.Controls["(名字)"] as Label;就可以為所欲為了
uj5u.com熱心網友回復:
試試用label.tag來存盤序號,讀取這個序號的label再改內容。public void AddLabel()
{
for (int i = 0; i < 16; i++)
{
Label l = new Label();
l.Name = "labNum_" + i.ToString();
l.Font = new Font("黑體", 15);
l.Text = "2";
l.tag=i;
l.Location = new Point(215 + (i % 4) * 50, 215 + (i / 4) * 50);
l.Size = new Size(20, 20);
this.Controls.Add(l);
}
}
private bool changeLabText(string num,string txt)
{
foreach(control c in this.controls)
{
if(c.tag==num)
{
((Label)c).text=txt;
return true;
}
}
return false;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/41639.html
標籤:C#
