C# 列表框未在WPF应用程序中排序
在添加/删除列表时,我试图通过存储到列表然后对其进行排序来重新排序。当我运行应用程序时,添加到列表中的新项目总是添加到底部,而不是排序 FileCabinetsRetrieve是我的第一个列表框,FileCabinetsToAdd是我的第二个列表框C# 列表框未在WPF应用程序中排序,c#,sorting,listbox,C#,Sorting,Listbox,在添加/删除列表时,我试图通过存储到列表然后对其进行排序来重新排序。当我运行应用程序时,添加到列表中的新项目总是添加到底部,而不是排序 FileCabinetsRetrieve是我的第一个列表框,FileCabinetsToAdd是我的第二个列表框 private void addBttn_Click(object sender, RoutedEventArgs e) { List<string> allItems = new List<stri
private void addBttn_Click(object sender, RoutedEventArgs e)
{
List<string> allItems = new List<string>();
List<string> addedItems = new List<string>();
List<string> remainingItems = new List<string>();
//adding all items in FileCabinetsretreived into allItems list
foreach (var item in FileCabinetsRetrieved.Items)
{
allItems.Add(item.ToString());
}
//sorting all items list
allItems = allItems.OrderBy(x => x).ToList();
//adding Selected items to addedItems list
foreach (var item in FileCabinetsRetrieved.SelectedItems)
{
addedItems.Add(item.ToString());
}
//sorting addedItems list
addedItems = addedItems.OrderBy(x => x).ToList();
// creating list of remaining items = allitems - addedItems
remainingItems = allItems.Except(addedItems).ToList();
//sorting remainingItems list
remainingItems = remainingItems.OrderBy(x => x).ToList();
//adding list of selected items to the FileCabinetsToAdd list
foreach (var item in addedItems)
{
FileCabinetsToAdd.Items.Add(item);
}
//clearing FileCabinetsRetreived list
FileCabinetsRetrieved.Items.Clear();
//adding remainingItems list to FileCabinetsRetreived list
foreach (var item in remainingItems)
{
FileCabinetsRetrieved.Items.Add(item.ToString());
}
}
private void addBttn\u单击(对象发送方,路由目标)
{
列表所有项=新列表();
List addedItems=新列表();
List REMAININGIEMS=新列表();
//将FileCabinetsRetrieve中的所有项目添加到allItems列表中
foreach(FileCabinetsRetrieved.Items中的var项)
{
添加(item.ToString());
}
//对所有项目列表进行排序
allItems=allItems.OrderBy(x=>x.ToList();
//将所选项目添加到addedItems列表
foreach(FileCabinetsRetrieved.SelectedItems中的var项)
{
addedItems.Add(item.ToString());
}
//排序加法表
addedItems=addedItems.OrderBy(x=>x.ToList();
//创建剩余项列表=所有项-添加项
remainingItems=allItems.Exception(addedItems.ToList();
//对剩余项目列表进行排序
remainingItems=remainingItems.OrderBy(x=>x.ToList();
//将选定项目的列表添加到FileCabinetsToAdd列表
foreach(附录中的var项)
{
filecabinetostoadd.Items.Add(item);
}
//正在清除文件柜目录列表
FileCabinetsRetrieved.Items.Clear();
//将剩余项列表添加到FileCabinetRestreved列表
foreach(剩余项目中的var项目)
{
FileCabinetsRetrieved.Items.Add(item.ToString());
}
}
好的,您应该对FileCabinetsToAdd列表框中的项目进行排序。为此,可以使用listbox的sort属性:
FileCabinetsToAdd.Sorted = true;
那条线应该可以
如果需要自定义排序,则应:
好的,您应该对FileCabinetsToAdd列表框中的项目进行排序。为此,可以使用listbox的sort属性:
FileCabinetsToAdd.Sorted = true;
那条线应该可以
如果需要自定义排序,则应:
这将是我的添加按钮点击事件,虽然我没有运行它,所以可能会有一些错误,但这是一个好的开始
List<string> toSort = new List<string>();
foreach (var item in FileCabinetsRetrieved.SelectedItems)
{
FileCabinetsRetrieved.Items.Remove(item);
toSort.Add(item);
}
foreach (var item in FileCabinetsToAdd.Items)
{
toSort.Add(item);
}
toSort = toSort.OrderBy(x => x).ToList();
FileCabinetsToAdd.Items.Clear();
foreach (var item in toSort)
{
FileCabinetsToAdd.Items.Add(item);
}
List-toSort=新列表();
foreach(FileCabinetsRetrieved.SelectedItems中的var项)
{
FileCabinetsRetrieved.Items.Remove(item);
toSort.Add(项目);
}
foreach(FileCabinetsToAdd.Items中的var项)
{
toSort.Add(项目);
}
toSort=toSort.OrderBy(x=>x.ToList();
FileCabinetsToAdd.Items.Clear();
foreach(toSort中的变量项)
{
filecabinetostoadd.Items.Add(item);
}
重要的部分是清除列表,然后再次添加所有已排序的项目。这将是我的添加按钮单击事件,虽然我没有运行它,因此可能会出现一些错误,但这是一个良好的开始
List<string> toSort = new List<string>();
foreach (var item in FileCabinetsRetrieved.SelectedItems)
{
FileCabinetsRetrieved.Items.Remove(item);
toSort.Add(item);
}
foreach (var item in FileCabinetsToAdd.Items)
{
toSort.Add(item);
}
toSort = toSort.OrderBy(x => x).ToList();
FileCabinetsToAdd.Items.Clear();
foreach (var item in toSort)
{
FileCabinetsToAdd.Items.Add(item);
}
List-toSort=新列表();
foreach(FileCabinetsRetrieved.SelectedItems中的var项)
{
FileCabinetsRetrieved.Items.Remove(item);
toSort.Add(项目);
}
foreach(FileCabinetsToAdd.Items中的var项)
{
toSort.Add(项目);
}
toSort=toSort.OrderBy(x=>x.ToList();
FileCabinetsToAdd.Items.Clear();
foreach(toSort中的变量项)
{
filecabinetostoadd.Items.Add(item);
}
重要的部分是清除列表,然后再次添加所有已排序的项目。我已经阅读了您的代码,但我不完全确定您想要完成什么。也许UI图片可以帮助我理解你的问题。只是提醒一下:您没有对代码中的FileCabinetToAdd.Items进行排序(为了这样做,您需要像处理FileCabinesRetrieved一样进行排序)。右边的列表框没有按字母顺序添加项目,这是该方法应该做的事情。我已经阅读了您的代码,但我不完全确定您想要完成什么。也许UI图片可以帮助我理解你的问题。只是提醒一下:您没有对代码中的FileCabinetToAdd.Items进行排序(为了这样做,您需要像处理FileCabinesRetrieved一样进行排序)。右边的列表框没有按字母顺序添加项目,这是该方法应该做的,问题是我没有以相同的方式更新第二个列表框。我最终重写了整个方法问题,因为我没有以同样的方式更新第二个列表框。我最终改写了整个方法