画面のリンクリストだけをまとめて操作する手順
フォームのControlsプロパティには画面上の部品の一覧が入っているので、これをループで回せばよい。
たとえば、テキストが「0」ならリンクリストを無効にしたいなら、こん感じ。
たとえば、テキストが「0」ならリンクリストを無効にしたいなら、こん感じ。
foreach (Control x in this.Controls) { if (x is LinkLabel) { LinkLabel ln = (LinkLabel)x; ln.Enabled = (ln.Text != "0"); } }
しかし画面にパネルを貼って、その上にリンクラベルを置いているとうまくいかない。パネルに載っている部品は、フォームのControlsには含まれていないので。
これを解決するには、再帰的に部品を探していくメソッドを作るしかない。
private List<Control> getChildControls(Control ct) { List<Control> lst = new List<Control>(); foreach (Control c in ct.Controls) { lst.Add(c); lst.AddRange(getChildControls(c)); } return lst; }
LINQを使うともっとスマートにいくのかしら。
コメント
コメントを投稿