|
C#. Как блокировать события, чтобы они не выполнялись при работе с контролами?
|
|||
---|---|---|---|
#18+
Есть у меня textbox1 и List1. Изменяю содержимое textbox1.text, вызывается событие TextChanged. Изменяю содержимое List1.text, вызывается событие SelectedIndexChanged. Цель: При изменении TextBox1, хочется, чтобы в List1 курсор позиционировался в соответствующую строку. И наоборот: При изменении выделенной строки в List1, она должна записываться в textbox1. Проблема: При изменении TextBox1 я пишу: Код: c# 1. 2. 3. 4. 5.
соответственно, во второй строке вызывается событие SelectedIndexChanged Код: c# 1. 2. 3. 4.
которое, в свою очередь, из-за изменения значения TextBox1.Text, вызывает TextBox1_TextChanged. И поехали циклиться. предполагаемое решение Код: c# 1. 2. 3. 4. 5. 6. 7.
не помогло. Прошу помощи. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2012, 14:42 |
|
C#. Как блокировать события, чтобы они не выполнялись при работе с контролами?
|
|||
---|---|---|---|
#18+
или отключать обработчик события навремя, или ввести булевскую переменную для проверки ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2012, 14:46 |
|
C#. Как блокировать события, чтобы они не выполнялись при работе с контролами?
|
|||
---|---|---|---|
#18+
Charles Weyland, используй биндинг ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2012, 14:47 |
|
C#. Как блокировать события, чтобы они не выполнялись при работе с контролами?
|
|||
---|---|---|---|
#18+
pationCharles Weyland, используй биндинг в смысле?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2012, 14:52 |
|
C#. Как блокировать события, чтобы они не выполнялись при работе с контролами?
|
|||
---|---|---|---|
#18+
Вообще, может, есть паттерн на эту тему? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2012, 14:53 |
|
C#. Как блокировать события, чтобы они не выполнялись при работе с контролами?
|
|||
---|---|---|---|
#18+
как удалось добиться зацикливания? Или это просто предположение? SuspendLayout();ResumeLayout(false); - это здесь не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2012, 14:55 |
|
C#. Как блокировать события, чтобы они не выполнялись при работе с контролами?
|
|||
---|---|---|---|
#18+
Изопропилкак удалось добиться зацикливания? Или это просто предположение? SuspendLayout();ResumeLayout(false); - это здесь не нужно. Полного зацикливания нет, но по второму разу он по этим событиям проходит - это точно: Изменяю текстбокс, в нём указывается изменение позиции в списке Изменяется листбокс, теперь он посылает в текстбокс корректированное название этого текста снова вызывается текстбокс, в нём указывается изменение позиции в списке. Поскольку позиция на деле не изменяется, то событие листбокса не вызывается. Зацикливания нет, но всё равно фигня какая-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2012, 15:03 |
|
C#. Как блокировать события, чтобы они не выполнялись при работе с контролами?
|
|||
---|---|---|---|
#18+
Charles WeylandИзменяется листбокс, теперь он посылает в текстбокс корректированное название этого текста снова вызывается текстбокс, в нём указывается изменение позиции в списке. Поскольку позиция на деле не изменяется, то событие листбокса не вызывается. Зацикливания нет, но всё равно фигня какая-то. за вас просто подумали и запретили повторный вызов события. никакой фигни и никакого зацикливания. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2012, 15:06 |
|
C#. Как блокировать события, чтобы они не выполнялись при работе с контролами?
|
|||
---|---|---|---|
#18+
А чем не устроил стандартный комбо-бокс с выставленным свойством DropDownStyle = Simple а? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2012, 15:21 |
|
C#. Как блокировать события, чтобы они не выполнялись при работе с контролами?
|
|||
---|---|---|---|
#18+
smehА чем не устроил стандартный комбо-бокс с выставленным свойством DropDownStyle = Simple а? тонкости проектного решения... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2012, 15:33 |
|
C#. Как блокировать события, чтобы они не выполнялись при работе с контролами?
|
|||
---|---|---|---|
#18+
ИзопропилCharles WeylandИзменяется листбокс, теперь он посылает в текстбокс корректированное название этого текста снова вызывается текстбокс, в нём указывается изменение позиции в списке. Поскольку позиция на деле не изменяется, то событие листбокса не вызывается. Зацикливания нет, но всё равно фигня какая-то. за вас просто подумали и запретили повторный вызов события. никакой фигни и никакого зацикливания. Да неужели всё так просто? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2012, 15:37 |
|
C#. Как блокировать события, чтобы они не выполнялись при работе с контролами?
|
|||
---|---|---|---|
#18+
Charles WeylandДа неужели всё так просто? да. пользователь ввёл в поле textBox1 некий текст, а какой-то чудак ему насильно пытается приписать суффикс abc, причём на любое изменение поля ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2012, 15:44 |
|
C#. Как блокировать события, чтобы они не выполнялись при работе с контролами?
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
вот я решил проверить написанное вами, сделал только малость по другому. при вводе в текст боксе числа он выбирается в списке, при выборе в списке меняется в textbox и при этом ни каких 2 событий не возникает. Даже не знаю, с чем это связано. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2012, 15:45 |
|
C#. Как блокировать события, чтобы они не выполнялись при работе с контролами?
|
|||
---|---|---|---|
#18+
Roman Mejtes, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
вот так в вашем 2 варианте всё работает, но зачем это надо я не представляю даже, получает хрень какая то ) если убрать + "а", +"b" и +"c" то обработчики событий можно не удалять на время, всё само как то замечательно работает :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2012, 15:52 |
|
C#. Как блокировать события, чтобы они не выполнялись при работе с контролами?
|
|||
---|---|---|---|
#18+
еще вариант отключать элемент управления в состоянии Enable = false, объект не обрабатывает события еще вариант получить доступ к закрытому полю объекта через Reflection ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2012, 16:00 |
|
C#. Как блокировать события, чтобы они не выполнялись при работе с контролами?
|
|||
---|---|---|---|
#18+
Roman MejtesRoman Mejtes, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
вот так в вашем 2 варианте всё работает, но зачем это надо я не представляю даже, получает хрень какая то ) если убрать + "а", +"b" и +"c" то обработчики событий можно не удалять на время, всё само как то замечательно работает :) Это был тест сказанного Изопропилза вас просто подумали и запретили повторный вызов события. никакой фигни и никакого зацикливания. Дело в том, что в моём листе и текстбоксе нет точного соответствия, а некоторое "примерное" (там алгоритмы уже смотрят, что к чему относятся). Поэтому решение от Romanа Mejtes хоть и дало мне кое-что новенькое, но не очень подходит: Roman Mejtes Код: c# 1. 2.
Но вариант - проглядывать через "посредника" -мне нравится ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2012, 16:06 |
|
C#. Как блокировать события, чтобы они не выполнялись при работе с контролами?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2012, 18:44 |
|
|
start [/forum/topic.php?fid=20&msg=38093682&tid=1405437]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
165ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 284ms |
0 / 0 |