我有这样的列表视图,在FormLoad事件中,我应该为它做一些初始化,如:(我需要这些).
listView.Scrollable = true;
listView.HideSelection = false;
listView.FullRowSelect = true;
listView.View = View.Details;
listView.HeaderStyle = ColumnHeaderStyle.None;
ColumnHeader header = new ColumnHeader();
header.Text = "MyHdr";
header.Name = "MyCol";
header.Width = listView.ClientSize.Width;
listView.Columns.Add(header);
Run Code Online (Sandbox Code Playgroud)
我添加项目的方式非常简单:
listView.Items.Add("hello");
listView.Items.Add("How are you");
//... etc
Run Code Online (Sandbox Code Playgroud)
但是我希望它们按字母顺序添加和排序,但是当我向它添加一个新项目并调用Sort方法时,它什么都不做.为什么?!:(
编辑:这是我在调用最后一行的整个部分Sort()目标是有两个列表视图和一个移动按钮,当单击"移动"按钮时,一个列表视图中的选定项应该移动到另一个列表视图.(两个列表视图都不需要排序.只需对AvailLV列表视图进行排序)
private void MoveBtn_Click(object sender, EventArgs e)
{
ListView source=null;
ListView target= null;
if(AvailableLV.SelectedItems.Count>0)
{
source = AvailableLV;
target = SelectedLV;
}
if(SelectedLV.SelectedItems.Count>0)
{
source = SelectedLV;
target = AvailableLV;
}
if (source != null && target != null)
{
HaulItems(source, target);
}
}
private void HaulItems(ListView source , ListView target)
{
foreach(ListViewItem item in source.Items)
{
if(item.Selected)
{
source.Items.Remove(item);
target.Items.Add(item);
}
}
AvailableLV.Sort();
}
Run Code Online (Sandbox Code Playgroud)
你在哪里设置ListView.Sorting属性
从上面的链接:
Sorting属性允许您指定是否在ListView控件中对项目进行排序.默认情况下,不执行排序.当Sorting属性设置为Ascending或Descending时,ListView中的项目将按升序字母顺序自动排序(当属性设置为Ascending时)或按字母顺序降序排序(当属性设置为Descending时).您可以使用此属性自动对ListView控件中显示的项目进行排序,以便用户在大量项目可用时更轻松地查找项目.
查看您的编辑,我认为您需要做的就是设置ListView.Sorting属性AvailableLV,它会在添加项目时自动对其进行排序.或者不是打电话.
AvailableLV.Sort();
Run Code Online (Sandbox Code Playgroud)
使用
AvailableLV.Sorting = SortOrder.Ascending;
Run Code Online (Sandbox Code Playgroud)