Form1
にいくつかのボタンがあります。 FlatStyle
プロパティをFlatStyle.Popup
に設定したいとします。 私は検索と書いたいくつかのコードを以下のように:ウィンドウ内のすべてのボタンのプロパティを変更するにはどうすればいいですか?
// List<Control> ButtonsList = new List<Control>();
List<Button> ButtonsList = new List<Button>();
public Form1()
{
InitializeComponent();
this.Icon = Properties.Resources.autorun; //Project->Properties->Resources->
ButtonsList = GetAccessToAllButtons(this).OfType<Button>.ToList(); //*** hot line ***
foreach(Button btn in ButtonList)
{
btn.FlatStyle = FlatStyle.Popup;
}
}
public IEnumerable<Control> GetAccessToAllButtons(Control thisClass)
{
List<Control> ControlsList = new List<Control>();
foreach (Control child in thisClass.Controls)
{
ControlsList.AddRange(GetAccessToAllButtons(child));
}
ControlsList.Add(thisClass);
return ControlsList;
}
をしかし、私は自分のコードのホットラインでGetAccessToAllButtons()
を使用する場合、VSはこのエラーを生成します。
'System.Linq.Queryable.OfType(Query.Linq.IQueryable)' is a 'method', which is not valid in the given context
私のミスですか?
編集:hereでの参照は()
が見つかりませんでした。それは受け入れられた答えです!私は私の参照で別の状況がありますか?それは単にタイプミスですか?
いくつのボタンがありますか?それが10または20の場合、再帰を記述するのではなく、ボタン変数への参照を保持する配列を作成できますか?例えば、 'var buttons = new Button [] {button1、button2、button3}'動的にフォームにボタンを追加していますか? – shahkalpesh
@shahkalpesh私は14のボタンを持っており、フォームを動的に読み込まないで追加します。 – GntS
あなたは答えを得ているが、実行時にボタンを見つけるのではなく、14の変数名をボタン配列に追加するのは問題ないと思う。 – shahkalpesh