对文本框对象列表进行排序

时间:2012-09-08 04:45:24

标签: c# list sorting textbox

我想扫描一些序列号以只读取文本框。我创建了一个文本框列表,我无法弄清楚如何按文本框名称对它们进行排序:

// 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 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

尝试

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

它应该有用。

答案 2 :(得分:1)

您必须提供比较,因为TextBox不是基本类型:

theTextBoxesList.Sort(new Comparison<TextBox>(
    (tb1, tb2) => { return tb1.Name.CompareTo(tb1.Name); }
));

答案 3 :(得分:0)

theTextBoxesList.Sort( (a,b) => String.Compare(a.S,b.S) );