2016-01-28 2 views
0

У меня есть две проблемы с событиями мыши ComboBoxes. То, что я хочу достичь, - это «Touch-and-Release» -Solution, это означает, что после того, как Пользователь нажал/коснулся Combobox за 500 мс, что-то должно произойти. У меня есть Class, где я запускаю все мои Events до моего Controls. Для Combobox с Я делаю это так:Проблемы с Combobox MouseDown Events

((ComboBox)obj).PreviewMouseDown -= CTRLMouseButtonEventHandler_Down; 
         ((ComboBox)obj).PreviewMouseDown += CTRLMouseButtonEventHandler_Down; 
         ((ComboBox)obj).PreviewMouseUp -= CTRLMouseButtonEventHandler_Up; 
         ((ComboBox)obj).PreviewMouseUp += CTRLMouseButtonEventHandler_Up; 

Мои Up/Down- Events выглядеть следующим образом:

private void CTRLMouseButtonEventHandler_Down(object sender, MouseEventArgs e) 
    { 
     _currentControl = (Control)sender; 
     _touchHoldTimer = new System.Windows.Threading.DispatcherTimer(); 
     _touchHoldTimer.Interval = TimeSpan.FromMilliseconds(500); 
     _touchHoldTimer.Tick += TouchHoldTimer_Tick; 
     _touchHoldTimer.Start();   
    } 

    private void CTRLMouseButtonEventHandler_Up(object sender, MouseEventArgs e) 
    { 
     _touchHoldTimer.Stop(); 
    } 

Первая проблема, когда мой Focus находится на другом Control и нажмите на поле Combobox и держитесь, ничего не происходит. Сначала я должен щелкнуть по Combobox, а затем щелкнуть и удерживать, и он работает.

Моя вторая Проблема заключается в том, что PreviewMouseDown также вызывается, когда Scrollbar или ToggleButton из Combobox нажимается. Я пробовал что-то вроде этого:

((ComboBox)obj).AddHandler(TextBox.PreviewMouseDownEvent, new RoutedEventHandler(CTRLMouseButtonEventHandler_Down2)); 
         ((ComboBox)obj).AddHandler(TextBox.PreviewMouseUpEvent, new RoutedEventHandler(CTRLMouseButtonEventHandler_Up2)); 

Но он не работал. Может ли кто-нибудь указать мне направление в направлении, пожалуйста?

ответ

0

Добавить другое событие. Установите событие для зависания мыши над Combobox, чтобы дать ему выбор. Он будет таким же, как щелчок на нем.

EDIT:

другие возможные события:

DropDownOpened ContextMenuOpening

https://msdn.microsoft.com/en-us/library/system.windows.controls.combobox_events(v=vs.110).aspx

2. KeyDown event is not firing when pressing enter in an UserControl

Просто замените войти в пространство.

+0

Невозможно использовать решение Hover/MouseEnter –

+0

ok есть другие события, которые вы можете использовать. проверьте правку. – Claudius

+0

Но они мне помогают? Я хочу, чтобы PreviewMouseDown был запущен, как только я нажимаю «ComboBox», когда мой Focus находится в другом элементе управления. –

Смежные вопросы