[VB.NET][C#.NET] 再談控制項陣列

  • 36772
  • 0
  • C#
  • 2010-06-15

[VB.NET][C#.NET] 再談控制項陣列

之前有寫過動態加入控制項及處理控制項陣列的文章 [C#.NET][VB.NET] 如何設定 控制項陣列 / 動態加入控制項

當我們在Form裡已經建立了控制項,但要對這些控制項都做同一樣一件時,以下的方法就可以幫你省掉一些設定的程式

法一:列舉控制項,把符合條件的控制項挑出來加以處理

C#
//列舉控制項
int i=1; foreach (Control ctrl in this.Controls) { //取出控制項的類型 string TypeName = ctrl.GetType().Name; //類型若是Label if (TypeName == "Label") { ctrl.Name = "lab" + i.ToString(); this.listBox1.Items.Add(ctrl.Name); i++; } }

VB
'列舉控制項
Dim i As Integer = 1 For Each ctrl As Control In Me.Controls '取出控制項的類型 Dim TypeName As String = ctrl.[GetType]().Name '類型若是Label If TypeName = "Label" Then ctrl.Name = "lab" + i.ToString() Me.ListBox1.Items.Add(ctrl.Name) i += 1 End If Next

Form.Controls 屬性是用來取得這張Form的控制項

Controls.GetType 是取得這個控制項的類別名稱

 

法二:把所需要處理的控制項塞到陣列,在處理相關動作

C#
//把控制項塞到陣列理
Label[] labs = new Label[] { this.label1, this.label2, this.label3, this.label4, this.label5 }; int i = 1; foreach (Label item in labs) { //變更Text屬性 item.Text = i.ToString(); i++; }


'把控制項塞到陣列理 
Dim labs As Label() = New Label() {Me.Label1, Me.Label2, Me.Label3, Me.Label4, Me.Label5}
Dim i As Integer = 1
For Each item As Label In labs
    '變更Text屬性
    item.Text = i.ToString()
    i += 1
Next

提供上面兩個方法,擇一使用即可。

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo