我想扫描一些序列号以只读取文本框。我创建了一个文本框列表,我无法弄清楚如何按文本框名称对它们进行排序:
// 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?????
答案 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) );