我被困住了。 我想在用户重新排序(通过鼠标移动列)时获取列的新位置。 到目前为止:
private void listView1_ColumnReordered(object sender, ColumnReorderedEventArgs e)
{
foreach (ColumnHeader cHeader in listView1.Columns)
{
MessageBox.Show(cHeader.Text + cHeader.DisplayIndex.ToString());
}
}
当listview列重新排序时,我有一个事件。 但是,消息框显示其他情况,因为列记录为重新排序之前的列。 我很困惑。谁能帮我? 我只想在移动时获取列的新位置及其显示索引,而不是以前的配置。
答案 0 :(得分:0)
在用户重新排序列之后但在实际重新排序列之前触发ListView.ColumnReordered
事件。如果需要,您还可以通过将Cancel
参数的ColumnReorderedEventArgs
属性设置为true
来取消列重新排序。
因为在实际重新排序之前触发了事件,所以当您在代理中查看此事件的DisplayIndex
属性时,您将始终获得先前的列索引。而是查看OldDisplayIndex
参数的NewDisplayIndex
和ColumnReorderedEventArgs
。这将告诉您列的先前索引以及列的新索引将是什么 - 如果您不取消该事件。