在记录listview列时如何获取新的列标题和显示索引?

时间:2013-12-23 13:21:58

标签: c# winforms listview

我被困住了。 我想在用户重新排序(通过鼠标移动列)时获取列的新位置。 到目前为止:

private void listView1_ColumnReordered(object sender, ColumnReorderedEventArgs e)
{
   foreach (ColumnHeader cHeader in listView1.Columns)
   {
        MessageBox.Show(cHeader.Text + cHeader.DisplayIndex.ToString());
   }
}

当listview列重新排序时,我有一个事件。 但是,消息框显示其他情况,因为列记录为重新排序之前的列。 我很困惑。谁能帮我? 我只想在移动时获取列的新位置及其显示索引,而不是以前的配置。

1 个答案:

答案 0 :(得分:0)

在用户重新排序列之后但在实际重新排序列之前触发ListView.ColumnReordered事件。如果需要,您还可以通过将Cancel参数的ColumnReorderedEventArgs属性设置为true来取消列重新排序。

因为在实际重新排序之前触发了事件,所以当您在代理中查看此事件的DisplayIndex属性时,您将始终获得先前的列索引。而是查看OldDisplayIndex参数的NewDisplayIndexColumnReorderedEventArgs。这将告诉您列的先前索引以及列的新索引将是什么 - 如果您不取消该事件。