0

我正在尝试模拟鼠标单击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何时,据我所知,我传递了正确的类型?

4

0 回答 0