У меня есть две проблемы с событиями мыши 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));
Но он не работал. Может ли кто-нибудь указать мне направление в направлении, пожалуйста?
Невозможно использовать решение Hover/MouseEnter –
ok есть другие события, которые вы можете использовать. проверьте правку. – Claudius
Но они мне помогают? Я хочу, чтобы PreviewMouseDown был запущен, как только я нажимаю «ComboBox», когда мой Focus находится в другом элементе управления. –