我正在尝试模拟鼠标单击RichEditControl
. 我试图解决的根本问题是,Focus
如果用户在没有单击RichEditControl
第一个操作的情况下采取了另一个操作,则在此控件上进行设置。似乎如果您打开一个表单并且从不单击RichEditControl
,则不会初始化某些内容并且不会出现光标。
我已经阅读了几个有用的博客和关于此事的SO 帖子,它们似乎都指向我做一些形式的事情
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
“System.Windows.RoutedEventArgs”类型的对象无法转换为“System.Windows.Input.MouseButtonEventArgs”类型。
这对我来说毫无意义。MouseDownEvent
是类型RoutedEvent
。构造函数RoutedEventArgs
期望 aRoutedEvent
作为参数。RaiseEvent()
期待一个类型的参数RoutedEventArgs
。一切编译正常,没有警告。查看堆栈跟踪,异常发生更深,在System.RuntimeType.TryChangeType
.
虽然我非常怀疑这会解决我的潜在问题,但我仍然想尝试强制点击鼠标RichEditControl
,看看这是否能解决我的问题。所以我的问题是,为什么会MouseDoubleClickEvent
导致ArgumentException
何时,据我所知,我传递了正确的类型?