2017-08-03 4 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). 

リストをトラバースし、リスト内の名前と名前が一致するボタンを無効にすると考えましたが、そのロジックを取得できません。

私は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 

あなたはまたListを作成するためにLINQを使用することができます。

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; 
} 
関連する問題