按钮,IInvokeProvider和Click

时间:2011-06-10 01:35:25

标签: c# wpf events ui-automation

我只想弄清楚这个。为什么按钮IInvokeProvider在没有进行任何显式设置的情况下调用click事件?如果我想自动执行MouseEnterMouseLeave等其他方法,该怎么办?是什么让它假设当你调用Invoke()方法时它应该执行Click事件?

这是我的代码:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    ButtonAutomationPeer buttonPeer = new ButtonAutomationPeer(button);
    IInvokeProvider invokeProvider = buttonPeer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
    invokeProvider.Invoke(); // this triggers button_Click handler
}

private void button_Click(object sender, RoutedEventArgs e)
{
    MessageBox.Show("Button clicked!");
}

谢谢!

1 个答案:

答案 0 :(得分:3)

IInvokeProvider接口是System.Windows.Automation系列命名空间的一部分,也称为 WUIA(Windows用户界面自动化)。 WUIA旨在支持可访问性客户端(屏幕阅读器等)以支持例如盲人用户。 IInvokeProvider.Invoke()方法正在实现UI元素上调用默认操作。在您的情况下,按钮上的默认操作是单击事件。

您必须使用其他界面调用鼠标事件。