.NET ListView: событие после изменяющегося выбора

Построение на ответе jor (который не работает на меня):

substring=$(expr "$filename" : '.*_\([^_]*\)_.*')
5
задан Laurent 28 July 2009 в 05:22
поделиться

3 ответа

Вот мое решение в VB.NET, использующее технику, описанную в ObjectListView , как было предложено грамматистом :

Private idleHandlerSet As Boolean = False

Private Sub listview1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles listview1.SelectedIndexChanged
    '' may fire more than once
    If Not idleHandlerSet Then
        idleHandlerSet = True
        AddHandler Application.Idle, New EventHandler(AddressOf listview1_SelectionChanged)
    End If
End Sub

Private Sub listview1_SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
    '' will only fire once
    idleHandlerSet = False
    RemoveHandler Application.Idle, New EventHandler(AddressOf listview1_SelectionChanged)
    DoSearch()
End Sub
3
ответ дан 15 December 2019 в 01:08
поделиться

Меня это тоже раздражает, поэтому в ObjectListView (оболочка с открытым исходным кодом для .NET WinForms ListView) есть событие SelectionChanged, которое происходит только один раз на действие пользователя.

В обычном .NET ListView, когда состояние выбора любого элемента изменяется, он запускает событие SelectedIndexChanged. Таким образом, при простом щелчке по другой строке вы получаете одно событие для отмены выбора ранее выбранной строки, а другое - для выбора новой.

Если вы выбрали сто строк и выбрали другую строку, вы получите 101 событие SelectedIndexChanged, что может стать настоящей головной болью.

В любом случае, с ObjectListView вы получите только одно событие SelectionChanged независимо от сколько строк было выбрано или отменено.

3
ответ дан 15 December 2019 в 01:08
поделиться

Если вы хотите, чтобы ваши вычисления выполнялись только при выборе нового элемента, вы можете проверить, равен ли новый SelectedIndex! = -1

-2
ответ дан 15 December 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: