Combobox MouseDown事件的问题

时间:2016-01-28 13:09:58

标签: c# wpf combobox event-handling

我对ComboBoxes的鼠标事件有两个问题。我想要实现的是一个" Touch-and-Release" -Solution,这意味着在用户按下/触摸Combobox 500ms之后会发生一些事情。我有Class我将Events的所有Controls发送到Combobox。对于((ComboBox)obj).PreviewMouseDown -= CTRLMouseButtonEventHandler_Down; ((ComboBox)obj).PreviewMouseDown += CTRLMouseButtonEventHandler_Down; ((ComboBox)obj).PreviewMouseUp -= CTRLMouseButtonEventHandler_Up; ((ComboBox)obj).PreviewMouseUp += CTRLMouseButtonEventHandler_Up; 我这样做:

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的{​​{1}}或ToggleButton时,Combobox也会被触发。我试过这样的事情:

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

但它没有'工作。有人可以指点我的方向吗?

1 个答案:

答案 0 :(得分:0)

添加其他活动。将鼠标悬停在Combobox上设置事件以进行选择。它与点击它一样。

编辑:

其他可能的事件:

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

只需用空格替换回车。