2009-11-25 3 views
0

У меня есть два ListViews в моем приложении с первоначально идентичным набором столбцов. Когда пользователь переупорядочивает столбцы в одном, я хочу, чтобы столбцы в другом были переупорядочены.Как синхронизировать заказы столбцов в двух списках?

У меня есть следующий обработчик события на одном из ColumnReordered случае, чтобы мнения, и соответствующий обработчик на другой:

private volatile bool reorderingColumns; 

private void listView1_ColumnReordered(object sender, ColumnReorderedEventArgs e) 
{ 
    // Prevent reentry - is this necessary? 
    if (reorderingColumns) 
     return; 

    try 
    { 
     reorderingColumns = true; 

     // copy display indices to the other listView 
     for (int i = 0; i < columnInfo.Count; i++) 
     { 
      listView2.Columns[i].DisplayIndex = listView1.Columns[i].DisplayIndex; 
     } 
    } 
    finally 
    { 
     reorderingColumns = false; 
    } 
} 

однако порядок столбцов во втором ListView остается неизменным. Что мне нужно сделать, чтобы второй список мог перерисовать свои столбцы в новом порядке?

ответ

1

Это связано с тем, что переупорядоченное событие срабатывает перед фактическим изменением индекса столбца. Это будет работать:

private void listView1_ColumnReordered(object sender, ColumnReorderedEventArgs e) 
{ 
    listView2.Columns[e.Header.Index].DisplayIndex = e.NewDisplayIndex; 
} 

EDIT: Просто добавить, вам не нужен reorderingColumns чек больше с этим методом.

+0

Есть ли какие-либо события, которые срабатывают после его изменения? – Simon

+0

Я так не думаю. Возможно, вы могли бы реализовать свои собственные. – GenericTypeTea

Смежные вопросы