4

プログラムでコントロールを追加し、各コントロールの名前が同じであると仮定して、flowlayoutpanelでコントロールのプロパティを変更するにはどうすればよいですか?

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

代替テキスト

foreach(Controls ctrl in flowlayoutpanel1.Controls)
{
//What should I put here?
}
4

2 に答える 2

3

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

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

}

あなたの問題は、背景色を設定するのではなく、実際のボタンをもう一度見つけることだと思います。同様に、コントロールがボタンであり、そのテキストが「button2」であるかどうかを確認できますが、UI言語に応じてテキストが変更される可能性がある場合は、おそらくお勧めできません。

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

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

于 2010-10-08T05:22:16.703 に答える
3

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!";
于 2010-10-08T05:32:42.163 に答える