手动触发事件,如何实现

cfvmario 2013-06-13 10:51:21
需要手动触发控件xxx的MouseUp事件

RaiseEvent(new RoutedEventArgs(xxx.MouseUp));

这样不行,提示MouseUp只能在+=之前用,这点我都不太理解,+=那是对事件注册处理函数用的,和手动触发时间有何关系?
想了想改成

RaiseEvent(new RoutedEventArgs(UIElement.MouseUpEvent, xxx));

运行挂,提示RoutedEventArgs不能转换为MouseButtonEventArgs,纳闷了,这里哪里涉及后一个类型了
...全文
229 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
coobai 2013-06-13
  • 打赏
  • 举报
回复
似乎是wpf的。 不知道为啥这样写 也不会触发、、

this.button1.RaiseEvent(new MouseButtonEventArgs(Mouse.PrimaryDevice, 0, MouseButton.Left)
{
    RoutedEvent = Button.MouseUpEvent
});
cfvmario 2013-06-13
  • 打赏
  • 举报
回复
引用 2 楼 Return_false 的回复:
可以直接调用事件方法
button1_MouseUp(null,null);
或者将事件中的动作重构成公共调用的方法,然后调用
关键就是,实际逻辑中,控件XXX是动态取得的,所以不能硬编码方法,得用事件
cfvmario 2013-06-13
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
写好move的代码,直接调用,类似调用click一样 button1_Click(button1,null)
RaiseEvent里的参数用button的ClickEvent是毫无问题的。但实际中交互对象想灵活一些,不一定非得是button,没有click事件就想用MouseUp。要触发MouseUp,参数要怎么写
  • 打赏
  • 举报
回复
可以直接调用事件方法
button1_MouseUp(null,null);
或者将事件中的动作重构成公共调用的方法,然后调用
bdmh 2013-06-13
  • 打赏
  • 举报
回复
写好move的代码,直接调用,类似调用click一样 button1_Click(button1,null)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧