【发布时间】:2022-01-22 23:43:00
【问题描述】:
我目前正在开发这个旧的、生锈的 .NET 框架平台。
在我的表单中,我有一个 ListView,我正在向其中添加一些带有数据标记的项目。 当一个被选中时,新的带有数据标签的项目被放置在所选项目的下一级。
我按下一个列标题,这会强制列表视图按字母顺序对项目进行排序。 我再次在其中添加了一个带有数据标签的项目。 ListView 将它放在索引 0 处,尽管我选择了一个项目? 请看视频:https://drive.google.com/file/d/1pdAjHzylVCZjDzR3QltF_1v371hAb_3r/view?usp=sharing
到底为什么会这样? 关于为什么会出现此问题的任何建议?
感谢您的关注!
这是代码:
--添加数据标记项时--
private void btnAddSecuring_Click(object sender, EventArgs e)
{
int insertIndex = viewSecurings.SelectedItems.Count >= 1 ? viewSecurings.SelectedIndices[0] + 1 : 0;
Securing sec = new Securing(viewSecurings);
ListViewItem item = viewSecurings.Items.Insert(insertIndex, new ListViewItem() { Tag = sec } );
sec.ShowInListViewItem(item);
item.Selected = true;
item.BeginEdit();
}
// in Securing.cs:
public void ShowInListViewItem(ListViewItem item)
{
while (item.SubItems.Count < 3)
{
item.SubItems.Add("");
}
item.SubItems[0].Text = name;
item.SubItems[1].Text = lastExecuteToStr();
item.SubItems[2].Text = getTotalSrcBytes().ToString();
}
--点击列标题时--
private void viewSecurings_ColumnClick(object sender, ColumnClickEventArgs e)
{
currentColumnIndex = e.Column;
SortSecurings();
}
void SortSecurings()
{
viewSecurings.ListViewItemSorter = new ListViewItemComparer(currentColumnIndex);
viewSecurings.Sort();
}
当我不更改新添加项目的文本时,程序得到解决: 这意味着删除“item.SubItems[0].Text = name”可以解决问题。 但为什么呢?
-- ListViewItemComparer的代码-- http://csharp-slackers.blogspot.com/2008/09/how-to-sort-list-view-by-any-column.html
【问题讨论】:
-
伙计们,我可以自己解决一两分钟,然后我会发布我的解决方案!
标签: c# .net sorting listview listviewitem