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 回答