2017-08-03 38 views
0

我有一個列表其中我已經存儲了幾個按鈕的名稱。我用它來創建列表 .`按名稱搜索按鈕在窗體中並禁用它們c#

 List<String> seat = new List<String>(); //List name "seat". 
     for (int a = 0; a < dt.Rows.Count; a++) 
      seat.Add(dt.Rows[a]["SeatNo"].ToString()); //Adding values to seat from a column of table.("SeatNo" column has button names). 

我想的是,在形式,其名稱是一樣包含在列表那些名字,所有的按鈕來獲得禁用。

我想穿越列表並禁用名稱與List中的名稱匹配的按鈕,但我無法獲得該邏輯。

我是C#的初學者,請簡單說明一下。先謝謝你。

+0

以什麼方式存儲按鈕? – JavaHead1560

+0

自從我向您展示如何編寫它已經過了3天 –

+0

所有按鈕均位於Panel1中。我已經在表格中存儲了我想要的名字。 –

回答

1

不要在評論中重複代碼的操作。具有複數名稱的名稱集合。創建像這樣的列表:

var seats = new List<String>(); 
foreach (var row in dt.Rows) 
    seats.Add(row["SeatNo"].ToString()); // "SeatNo" column has button names 

你也可以使用LINQ創建List

var seats = dt.AsEnumerable().Select(r => r["SeatNo"].ToString()).ToList(); 

然後你只需經過座椅和禁用匹配控制:

foreach (var seat in seats) { 
    var controls = this.Controls.Find(seat, true); 
    foreach (var control in controls) 
     control.Enabled = false; 
} 

如果您擔心名稱可能與其他名稱衝突,則可以驗證它們是否爲按鈕:

foreach (var seat in seats) { 
    var controls = this.Controls.Find(seat, true); 
    foreach (var control in controls) 
     if (control is Button) 
      control.Enabled = false; 
}