我正试图在RichEditControl
上模拟鼠标点击。我试图解决的根本问题是如果用户在没有先点击Focus
的情况下采取其他操作,则在此控件上设置RichEditControl
。似乎如果您打开表单并且从不点击RichEditControl
,则表示某些内容未初始化且光标不会显示。
我在这个问题上已经阅读了几个有用的blogs和SO posts,他们似乎都指出我要做的事情
RichEdit.RaiseEvent( new RoutedEventArgs( <something> );
我已经写了这四行代码:
1. RichEdit.RaiseEvent( new RoutedEventArgs(Button.ClickEvent));
2. RichEdit.RaiseEvent( new RoutedEventArgs(RichEditControl.MouseDoubleClickEvent));
3. RichEdit.RaiseEvent( new RoutedEventArgs(RichEditControl.MouseDownEvent));
4. RichEdit.RaiseEvent( new RoutedEventArgs(RichEditControl.MouseUpEvent));
(1)什么都不做。这是有道理的,因为ClickEvent
属于Button
,而不属于RichEditControl
。 (2)什么都不做。这是一次双击。我想点击一下。
(3)和(4)是让我沮丧的原因。我得到了ArgumentException
类型的对象&#39; System.Windows.RoutedEventArgs&#39;无法转换为类型&#39; System.Windows.Input.MouseButtonEventArgs&#39;。
这对我没有意义。 MouseDownEvent
的类型为RoutedEvent
。 RoutedEventArgs
的构造函数期望RoutedEvent
作为参数。 RaiseEvent()
期待RoutedEventArgs
类型的参数。一切都很好,没有任何警告。查看堆栈跟踪,异常更深入,System.RuntimeType.TryChangeType
。
虽然我怀疑这会解决我的根本问题,但我仍然想尝试强制点击鼠标点击RichEditControl
,看看这是否解决了我的问题。所以我的问题是,为什么MouseDoubleClickEvent
会导致ArgumentException
何时,从我所知道的,我传递的是正确的类型?