如何在Silverlight 4中手动调用/引发鼠标事件?

时间:2010-07-14 21:15:40

标签: c# silverlight event-handling silverlight-4.0

在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 -=

手动举起此活动需要做什么?

3 个答案:

答案 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) { }