2

テキストボックスのみを読み取るために、いくつかのシリアル番号をスキャンしたいと考えています。テキスト ボックスのリストを作成しましたが、テキスト ボックス名で並べ替える方法がわかりません。

// This gets all the textboxnames ands makes an array of names and textboxes
foreach (Control groupbox in this.Controls)
{
    if (groupbox is GroupBox)
    {
        foreach (Control textbox in groupbox.Controls)
        {
            if (textbox is TextBox)
            {
                theTextBoxesList.Add((TextBox)textbox);
                TextBoxNames.Add(textbox.Name);

            }
        }
    }
}
TextBoxNames.Sort();

theTextBoxesList.Sort?????
4

4 に答える 4

2

TextBox List を並べ替えるには、LINQ Query が役立つと思います。OrderBy を使用して TextBox を昇順で並べ替えるか、OrderByDescending を使用して TextBox を降順で並べ替えます。

昇順ソート:

theTextBoxesList = theTextBoxesList.OrderBy(x => x.Name).ToList();

降順:

theTextBoxesList = theTextBoxesList.OrderByDescending(x => x.Name).ToList();

これは役に立ちますか?

データの並べ替えの詳細については、http://msdn.microsoft.com/en-us/library/bb546145.aspxを参照してください。

于 2012-09-08T05:49:26.683 に答える
1

試す

theTextBoxesList = theTextBoxesList.OrderBy(x => x.Name).toList();

動作するはずです。

于 2012-09-08T04:57:04.650 に答える
1

TextBoxプリミティブ型ではないため、比較を提供する必要があります。

theTextBoxesList.Sort(new Comparison<TextBox>(
    (tb1, tb2) => { return tb1.Name.CompareTo(tb1.Name); }
));
于 2012-09-08T05:04:50.620 に答える
0
theTextBoxesList.Sort( (a,b) => String.Compare(a.S,b.S) );
于 2012-09-08T05:03:45.233 に答える