質問

プログラムでコントロールを追加し、各コントロールの名前が同じであると仮定して、Flowlayoutpanelのコントロールの特性を変更する方法

たとえば、この画像は、2つのテキストボックスと2つのボタンがあることを示しています。ボタン2のバックカラーを変更するにはどうすればよいですか?実行時にコントロールが追加されたと仮定します。

alt text

foreach(Controls ctrl in flowlayoutpanel1.Controls)
{
//What should I put here?
}
役に立ちましたか?

解決

まあ、最も簡単な方法は、追加したボタンへの明示的な参照を保持することです。それ以外の場合は、タグを追加してそれらを区別することができます(i18nの問題に対して堅牢になるように)。たとえば、「button2」のタグを「button2」に設定して、次のことを使用できます。

foreach (Control ctl in flp.Controls) {
    if ("button2".Equals(ctl.Tag)) {
        ctl.BackColor = Color.Red;
    }

}

私はあなたの問題が実際のボタンをもう一度見つけて、背景色を設定しないことを前提としています。同様に、コントロールがボタンであり、そのテキストが「button2」であることを確認できますが、おそらく良いアイデアではないUI言語に応じてテキストが変更できる場合。

ETA: コントロールを使用できることを完全に忘れていました Name このためのプロパティも同様です。

ボタンの背景色を変更したい場合 イベント ボタンから使用できます sender ただし、イベントハンドラーの議論。

他のヒント

あなたが試すことができます control.controlcollection.find.

flowLayoutPanel1.Controls.Add(new Button() { Text = "button 1", Name = "btn1" });
Button btn1 = flowLayoutPanel1.Controls.Find("btn1", true).FirstOrDefault() as Button;
btn1.Text = "found!";
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top