|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
Всех приветствую! Есть ListView - 1 столбец. На событие SelectIndexChanged повешен обработчик. Проблема в том, что при смене (и даже не смене) выбора строки событие срабатывает по несколько раз. причём когда выбираю какую нить строку в первый раз, тоесть сразу после загрузки формы - всё ок. но потом, с каждым выбором кол-во выполнения обработки события растёт в разы... не могу понять в чём дело.... подсобит кто нить? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 00:11 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
J_Mnemonic, А пример кода или хотя-бы простой проект воспроизводящий ошибку приведёте? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 12:53 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
приложил пример. Как я понял, проблема связана с таймером и с какой то особеностью ListViewer Таймер использую потому, что на выбор приличная логика повешена. И если делать её сразу при выборе item, то выделение айтема происходит несколько заторможено - что визуально дискомфортно. а так, если инфа появится через пол секунды (даже четверть) вполне было бы сносно... но эти глюки... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 16:17 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
2J_Mnemonic вы знаете толк в извращениях. Тупое решение: Код: c# 1. 2.
Но не делайте так, неправильно все это))) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 16:32 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
SerP1983, ну так подскажите как правильно? :) я пока ещё без году неделя программист в C# ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 16:34 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
1) Какой фреймворк? 2) "на выбор приличная логика повешена" - какая? Есть ли взаимодействие с ui? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 16:42 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
SerP1983, 1 - 4.0 2 - есть. Подсвечиваются всякие статусы, лэйбэлы и т.п. (по ним я и заметил что несклько раз срабатывает -мигать стали) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 16:45 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
ах, да. на счёт логики. там из базы тянутся значения для выбранного человека. ну тоесть небольшая задержка но есть ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 17:00 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
Воткните в свой пример Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 17:25 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
SerP1983, Task.Factory - точно так? это кроме using System.Threading; что ещё надо подключить? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 17:43 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
и в этом месте, как я понимаю, (this.Text = "Count: " + Count++;) должна находится вся моя логика? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 17:53 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
1) System.Threading.Tasks 2) Нет. DoLongOperation: вытянуть какие-то там значения из БД. DoAfterLongOperation: обновить ui после того, как значения из БД будут вытянуты. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 17:56 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
3) (this.Text = "Count: " + Count++;) - показатель того, что события по одному разу срабатывают ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 17:58 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
SerP1983, Спасибо большое! Так причина моей проблемы была в неверном использовании таймера? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 17:59 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
Вот тут вот проблема: Код: c# 1.
. Вы на клик в listView привязывали плюс еще одно событие на Tick таймера. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 18:05 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
SerP1983, ну да, задумка в этом и была. чтобы после клика, через четверть секунды начался весь процесс обработки нажатия... (но задумывалось чтоб это было 1 раз, а не так как есть) в чём неправильность этого метода? Я так и не понял, почему же несколько раз обработка шла... Я ведь вырубаю таймер как только вызываю метод с главным алгоритмом... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 19:17 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
1) А если запрос к БД отработает дольше, чем четверть секунды? 2) Зачем придумывать велосипеды, когда все давно придумали за вас? 3) Научитесь пользоваться гуглом. Для начала читать про event, multicastdelegate. Потом про APM, EAP, TAP. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2013, 08:52 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
касательно пункта 1. Я и не расчитывал что за четверть секунды отработает. Я только хотел чтобы сам Item выбирался без тормозов. Поэтому отделил таймером всю логику от обработчика события... чтобы при выборе, сама строка выбралась моментально, а уже после произошла вся логика. но видимо что то не учёл. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2013, 09:20 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
Вопрос: я не понял, вы оставляете костыли с таймером или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2013, 09:44 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
SerP1983, нет нет.я не хочу костыли. я просто хочу понять косяк моей версии ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2013, 09:47 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
и ещё вопрос. если я ставлю listDrivers.ItemSelectionChanged += ListDriversOnItemSelectionChanged; то мой обработчик, который я вешал на listDrivers, надо убрать? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2013, 09:52 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
Ну тогда может так поймете. Поменяйте 2 метода в вашем примере: перенесите 3 строчки из onChangeIndex в Form1. И все же гляньте про event и multicastdelegate Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2013, 09:53 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
Да, надо убрать, а то он срабатывает по 2 раза на одну смену текущего item. Собственно, ItemSelectionChanged тоже срабатывает 2 раза, но можно отследить новый выбранный item по args.IsSelected ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2013, 09:56 |
|
C# Listview. Событие SelectIndexChanged срабатывает несколько раз
|
|||
---|---|---|---|
#18+
J_MnemonicSerP1983, нет нет.я не хочу костыли. я просто хочу понять косяк моей версии проблема вашей версии в том что как раз таймер и есть костыль. он здесь вообще неуместен. используйте асинхронные операции. или Task как описано выше. в фреймворке 4.5 так вообще красота. с Async/Await ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2013, 09:57 |
|
|
start [/forum/topic.php?fid=20&msg=38402400&tid=1404013]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
5ms |
track hit: |
54ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 192ms |
0 / 0 |