2

私の質問は単純です:どうすればこのコードをさらに短縮できますか?

 List<Button> buttonList = new List<Button>();

        buttonList.Add(button1);
        buttonList.Add(button2);
        buttonList.Add(button3);
        buttonList.Add(button4);
        buttonList.Add(button5);
        buttonList.Add(button6);
        buttonList.Add(button7);
        buttonList.Add(button8);
        buttonList.Add(button9);
4

4 に答える 4

2

コレクション初期化子を試してください:

List<Button> buttonList = new List<Button>() 
{    
     button1,
     button2,
     button3,
     button4,
     button5,
     button6,
     button7,
     button8,
     button9
 }
于 2013-01-24T00:39:53.490 に答える
1

コレクション初期化子を使用できます:

var buttonList = new List<Button>
{
   button1, button2, button3,
   //...
};
于 2013-01-24T00:39:32.537 に答える
0

ボタンをコントロールのControlsコレクション(たとえば、aFormまたはa Panel)に保存している場合は、次を使用できます。

//here `this` is supposed to be a `Form`
List<Button> buttonList = this.Controls.OfType<Button>() 
                                       .OrderBy(b=>b.Name)
                                       .ToList();

この場合、いくつかのコンテナコントロール内に格納された、列挙可能なボタンを返すメソッドがある場合があります。

public IEnumerable<Button> GetButtons()
{
    return this.Controls.OfType<Button>().OrderBy(b => b.Name);
    //return this.panel1.Controls.OfType<Button>().OrderBy(b => b.Name);
    //actually any container control you're having your buttons within
}

そしてあなたはそれを使うことができます:

foreach(Button b in GetButtons())
{
    //...
}
于 2013-01-24T00:44:37.197 に答える
0

コレクション初期化子を使用できます。

List<Button> buttonList = new List<Button>
{
    button1,
    button2,
    button3,
    button4,
    button5,
    button6,
    button7,
    button8,
    button9,
}
于 2013-01-24T00:39:51.823 に答える