画面のリンクリストだけをまとめて操作する手順
フォームの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を使うともっとスマートにいくのかしら。
コメント
コメントを投稿