在Silverlight 4中,我希望在单击鼠标右键时调用其中一个鼠标按钮单击事件。我已经连接了RightMouseButtonDown点击事件,但我不知道如何手动触发MouseLeftButtonUp事件。
我尝试过以下方式举办活动。
private void MainLayoutRootMouseButton(object sender, MouseButtonEventArgs e)
{
MouseLeftButtonDown(sender, e);
}
但是,发生编译器错误:
"The event 'System.Windows.UIElement.MouseLeftButtonDown' can only appear on the left hand side of += or -=
手动举起此活动需要做什么?
答案 0 :(得分:3)
其他答案是正确的,因为它们向您展示如何调用与其他鼠标事件相同的代码路径。
应该清楚的是,在Silverlight中,出于安全原因,您无法引发(或自动化)实际的鼠标按键单击。
只有用户启动的操作(例如实际鼠标移动)才能创建真正的MouseEventArgs并通过Silverlight输入系统直接触发处理程序。
答案 1 :(得分:2)
你真的不应该自己提升这个事件。相反,将MouseLeftButtonUp中的代码作为自己的函数,然后从MouseLeftButtonUp和MouseRightButtonUp事件中调用该函数。
e.g。
private void MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
DoTheSameThing(sender, e);
}
private void MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
DoTheSameThing(sender, e);
}
private void DoTheSameThing(object sender, MouseButtonEventArgs e)
{
//Handle left or right mouse buttons up event
}
答案 2 :(得分:0)
在你的页面的init函数中,你需要有这行代码
someObjectOnPage.MouseLeftButtonDown += new MouseDownEventHandler(DoSomething);
someObjectOnPage.MouseRightButtonDown += new MouseDownEventHandler(DoSomething);
这是纯粹的伪代码,但应引导您走上正确的轨道
你的方法也需要看起来像这样
void DoSomething(object sender, MouseButtonEventArgs e) { }