Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 21

Как остановить всплывание события

07.01.2013, 16:19. Показов 2816. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, у меня вопрос. Есть форма, на форме элемент Image. У формы и у имджа есть обработчик события DoubleClick. При двойном щелчке на имидже, обрабатывается сначала целчок для имиджа а потом для формы. Как сделать так, чтобы обрабатывался только щелчок для имджа.
Спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.01.2013, 16:19
Ответы с готовыми решениями:

Как остановить обработчик события onclick?
Типо тест на знание английского.Есть словарь,нужно чтобы по клику выводилось следующее слово.Всё работает,но не знаю как остановить после...

Как остановить повторное выполнения события onclick
Срочно нужна помощь. На заключительной стадии сдачи проекта тестеры нашли один баг серьезный. Суть проблемы такова. Страница изначально...

Как остановить главный поток до момента выполнения определенного события?
Подскажите как остановить главный поток до момента выполнения определенного события?

13
 Аватар для LeniumSoft
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
07.01.2013, 21:32
В обработчике Image дописать e.Handled = true;
0
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 21
07.01.2013, 22:10  [ТС]
Я пробовал не помогло.
0
 Аватар для LeniumSoft
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
08.01.2013, 01:32
Ну значит специфично у вас обработчики работают! Покажите код! Я вам написал как остановить обработку при нормальных условиях!
0
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 21
09.01.2013, 22:18  [ТС]
Вот код.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Дабл клик для окна
        private void Window_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            MessageBox.Show("window");
        }
 
        //Дабл клик для Имиджа
        private void image1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (e.ChangedButton == MouseButton.Left && e.ClickCount == 2)
            {
                MessageBox.Show("image");
            }
            e.Handled = true;
        }
0
 Аватар для LeniumSoft
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
09.01.2013, 22:31


Блин! Ну ты сам что не видишь, что это разные обработчики? e.Handled = true обрывает только одинаковые обработчики! Сделай для окна тоже MouseLeftButtonDown с таким же содержимым как и у Image! Или наоборот Image сделай MouseDoubleClick если это возможно! Я уже не помню точно. Когда будут одинаковые обработчики, второй будет обрываться!
0
 Аватар для CSharpCraft
58 / 58 / 9
Регистрация: 09.01.2013
Сообщений: 247
10.01.2013, 21:29
Попробуйте поместить image в grid, желательно с непрозрачным фоном.
0
8 / 8 / 3
Регистрация: 20.05.2012
Сообщений: 174
06.08.2015, 10:33
Цитата Сообщение от LeniumSoft Посмотреть сообщение
Блин! Ну ты сам что не видишь, что это разные обработчики? e.Handled = true обрывает только одинаковые обработчики! Сделай для окна тоже MouseLeftButtonDown с таким же содержимым как и у Image! Или наоборот Image сделай MouseDoubleClick если это возможно! Я уже не помню точно. Когда будут одинаковые обработчики, второй будет обрываться!
Подскажите, в чём выражается признак "одинаковости" обработчиков, пожалуйста... Имя метода, набор параметров?

Схожая проблема, что и у автора - Обработка события MouseDoubleClick для TreeViewItem вызывается и для всех его родителей, не смотря на e.Handled = true...
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
06.08.2015, 13:05
Kamerton, скинь проект, попробуем решить проблему.

Добавлено через 29 секунд
Цитата Сообщение от CSharpCraft Посмотреть сообщение
желательно с непрозрачным фоном.
Достаточно кисти Transparent
0
Жуткая тВарЬ
394 / 329 / 135
Регистрация: 06.02.2015
Сообщений: 962
Записей в блоге: 1
06.08.2015, 15:38
Цитата Сообщение от Kamerton Посмотреть сообщение
Схожая проблема, что и у автора - Обработка события MouseDoubleClick для TreeViewItem вызывается и для всех его родителей, не смотря на e.Handled = true...
.....Ни чего Вы не понимаете в колбасных обрезках....


Да и вообще о шаблонах надо бы узнать побольше - особенно как TreeView по умолчанию реализован...
0
8 / 8 / 3
Регистрация: 20.05.2012
Сообщений: 174
06.08.2015, 16:27
Цитата Сообщение от amarf Посмотреть сообщение
Ни чего Вы не понимаете в колбасных обрезках
Так просветите, я же не волшебник

Решил проблему следующим образом:

C#
1
2
3
4
5
6
7
8
void OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    MyTreeViewItem item = sender as item;
    if(item == null || !item.IsSelected)
        return;
 
    //прочая логика при двойном клике
}
0
Жуткая тВарЬ
394 / 329 / 135
Регистрация: 06.02.2015
Сообщений: 962
Записей в блоге: 1
06.08.2015, 17:05
Цитата Сообщение от Kamerton Посмотреть сообщение
Так просветите, я же не волшебник
Просвещать не буду, процесс может затянуться +) ибо обработчики событий в нормальных проектах не используют таким образом как Вы...

В Вашем случае проще повесить обработчик на TreeView и обрабатывать событие на уровне контейнера а не каждого итема:
C#
1
2
3
4
5
6
7
8
9
10
11
 private void TreeView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (sender is TreeView)
            {
                if (((TreeView)sender).SelectedItem != null)
                {
                    (((TreeView)sender).SelectedItem as TreeViewItem).Header += "*";
                }
            }
            
        }
Добавлено через 31 секунду
Разгрузите проц. и событие будет обрабатываться ровно 1 раз.
0
8 / 8 / 3
Регистрация: 20.05.2012
Сообщений: 174
07.08.2015, 08:47
Цитата Сообщение от amarf Посмотреть сообщение
ибо обработчики событий в нормальных проектах не используют таким образом как Вы
Так хочется научиться писать нормальные проекты, а не такие вот...

Может хотя бы намёк?

Пока искал ответ, наткнулся на статью про Attached Behaviors. Это их надо использовать? Меня количество манипуляций в статье напрягает и заставляет задуматься о целесообразности подхода...

П.С.

SelectedItem, кстати, не совсем корректно срабатывает в моём случае. Для некоторых элементов дерева почему-то IsSelected установлено и у родительского элемента.
0
07.08.2015, 13:18

Не по теме:

Цитата Сообщение от Kamerton Посмотреть сообщение
Может хотя бы намёк?
Это не ваша тема, и для конкретных ответов нужны конкретные вопросы

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.08.2015, 13:18
Помогаю со студенческими работами здесь

Показать messagebox и при этом все остановить все события основного окна
суть в чем. после того как пэкмен съедает все точки я хочу кинуть messagebox(пока для начала) о том что уровень завершен. но при этом у...

Всплывание окна подтверждения
Прошу помощи, при нажатии на форме "перезвоните мне" отправка данных на почту проходит, но вот не вылезает сообщение о подтверждении. ...

Всплывание панели задач
Если я ставлю, чтобы панель задач автоматически убиралась с экрана. Можно ли как-то настроить таким образом, чтобы панель задач не...

Edit1 и всплывание многострочного редактора
Такой вопрос, необходимо при клике по Edit1, открывалось что то типа мемо, и туда же уже писать текст.и при нажатии кнопки, закрыть...

Всплывание рекламных сайтов в браузере
Появились левые сайты при серфинге в хроме. Посторонних процессов не вижу. Помогите пожалуйста. не нашел как редактировать. потому...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru