Рейтинг:
4
AndreaP92
Решается вот так, Спасибо тебе, Майкл.
Private ListView2Changing As Boolean = False
Private ListView1Changing As Boolean = False
Private Sub ListView2_ColumnWidthChanged(sender As Object, e As ColumnWidthChangedEventArgs) Handles ListView2.ColumnWidthChanged
If ListView1Changing = False Then
ListView2Changing = True
ColumnHeader4.Width = ColumnHeader1.Width / 2
ColumnHeader5.Width = ColumnHeader1.Width / 2
ColumnHeader6.Width = ColumnHeader2.Width / 2
ColumnHeader7.Width = ColumnHeader2.Width / 2
ColumnHeader8.Width = ColumnHeader3.Width / 3
ColumnHeader9.Width = ColumnHeader3.Width / 3
ColumnHeader10.Width = ColumnHeader3.Width / 3
ListView2Changing = False
End If
End Sub
Private Sub ListView1_ColumnWidthChanged(sender As Object, e As ColumnWidthChangedEventArgs) Handles ListView1.ColumnWidthChanged
If ListView2Changing = False Then
ListView1Changing = True
ColumnHeader1.Width = ColumnHeader4.Width + ColumnHeader5.Width
ColumnHeader2.Width = ColumnHeader6.Width + ColumnHeader7.Width
ColumnHeader3.Width = ColumnHeader8.Width + ColumnHeader9.Width + ColumnHeader10.Width
ListView1Changing = False
End If
End Sub
Michael_Davies
Вы тестируете неправильное логическое значение:
Если ListView1Changing = False, То
ListView2Changing = True
Рейтинг:
1
Michael_Davies
Попробуйте любой из этих методов:
Private ListView1Changing as Boolean = false
Private Sub ListView1_ColumnWidthChanged(sender As Object, e As ColumnWidthChangedEventArgs) Handles ListView1.ColumnWidthChanged
if ListView1Changing = false Then
ListView1Changing = true
Ch_hello.Width = ColumnHeader1.Width + ColumnHeader2.Width
Ch_world.Width = ColumnHeader3.Width + ColumnHeader4.Width
Ch_hi.Width = ColumnHeader5.Width + ColumnHeader6.Width + ColumnHeader7.Width
ListView1Changing = false
Endif
End Sub
Или
Private Sub ListView1_ColumnWidthChanged(sender As Object, e As ColumnWidthChangedEventArgs) Handles ListView1.ColumnWidthChanged
RemoveHandler ListView1, AddressOf ListView1_ColumnWidthChanged
Ch_hello.Width = ColumnHeader1.Width + ColumnHeader2.Width
Ch_world.Width = ColumnHeader3.Width + ColumnHeader4.Width
Ch_hi.Width = ColumnHeader5.Width + ColumnHeader6.Width + ColumnHeader7.Width
AddHandler ListView1, AddressOf ListView1_ColumnWidthChanged
End Sub
AndreaP92
Спасибо Майклу, я попробовал, оба кода работают только для первого столбца listview2 и первых двух listview1.
Michael_Davies
Покажите свой измененный код.
AndreaP92
Форма Публичного Класса 1
Private ListView1Changing As Boolean = False
Private Sub ListView1_ColumnWidthChanged (sender As Object, e As ColumnWidthChangedEventArgs) обрабатывает ListView1. ColumnWidthChanged
Если ListView1Changing = False, То
ListView1Changing = True
ColumnHeader1.Ширина = ColumnHeader4.Ширина + ColumnHeader5.Ширина
ColumnHeader2.Ширина = ColumnHeader6.Ширина + ColumnHeader7.Ширина
ColumnHeader3.Ширина = ColumnHeader8.Ширина + ColumnHeader9.Ширина + ColumnHeader10.Ширина
ListView1Changing = False
Конец, Если
Конец Подводной Лодки
Private ListView2Changing As Boolean = False
Private Sub ListView2_ColumnWidthChanged (sender As Object, e As ColumnWidthChangedEventArgs) обрабатывает ListView2. ColumnWidthChanged
Если ListView2Changing = False, То
ListView2Changing = True
ColumnHeader4.Ширина = ColumnHeader1.Ширина / 2
ColumnHeader5.Ширина = ColumnHeader1.Ширина / 2
ColumnHeader6.Ширина = ColumnHeader2.Ширина / 2
ColumnHeader7.Ширина = ColumnHeader2.Ширина / 2
ColumnHeader8.Ширина = ColumnHeader3.Ширина / 3
ColumnHeader9.Ширина = ColumnHeader3.Ширина / 3
ColumnHeader10.Ширина = ColumnHeader3.Ширина / 3
ListView2Changing = False
Конец, Если
Конец Подводной Лодки
'Private Sub ListView1_ColumnWidthChanged (sender As Object, e As ColumnWidthChangedEventArgs) обрабатывает ListView1. ColumnWidthChanged
'Метод Removehandler Мыши Listview1.ColumnWidthChanged, Оператором Addressof ListView1_ColumnWidthChanged
'ColumnHeader1.Ширина = ColumnHeader4.Ширина + ColumnHeader5.Ширина
'ColumnHeader2.Ширина = ColumnHeader6.Ширина + ColumnHeader7.Ширина
'ColumnHeader3.Ширина = ColumnHeader8.Ширина + ColumnHeader9.Ширина + ColumnHeader10.Ширина
'Добавитьобработчик Мыши Listview1.ColumnWidthChanged, Оператором Addressof ListView1_ColumnWidthChanged
- Конец Субмарины
'Private Sub ListView2_ColumnWidthChanged (sender As Object, e As ColumnWidthChangedEventArgs) обрабатывает ListView2. ColumnWidthChanged
'RemoveHandler ListView2. ColumnWidthChanged, AddressOf ListView2_ColumnWidthChanged
'ColumnHeader4.Ширина = ColumnHeader1.Ширина / 2
'ColumnHeader5.Ширина = ColumnHeader1.Ширина / 2
'ColumnHeader6.Ширина = ColumnHeader2.Ширина / 2
'ColumnHeader7.Ширина = ColumnHeader2.Ширина / 2
'ColumnHeader8.Ширина = ColumnHeader3.Ширина / 3
'ColumnHeader9.Ширина = ColumnHeader3.Ширина / 3
'ColumnHeader10.Ширина = ColumnHeader3.Ширина / 3
'AddHandler ListView2. ColumnWidthChanged, AddressOf ListView2_ColumnWidthChanged
- Конец Субмарины
Конец Класса
Michael_Davies
Обработчик работает для любого изменения ширины столбца в listview, помещает разрыв в обработчик событий и использует отладчик, чтобы увидеть, что происходит.
Например, глядя на вашу логику, если вы измените ширину столбца columnheader4 LV2, обработчик событий сбросит его на ширину header1/2, так что вы никогда не увидите изменений.