【问题标题】:Simulate button click in a Metro Style App在 Metro Style App 中模拟按钮点击
【发布时间】:2012-05-17 14:40:56
【问题描述】:

我正在构建一个 Metro 风格的应用程序,我需要知道是否有办法以编程方式触发按钮点击。

我的 xaml 中有这个 PasswordBox 和按钮:

<PasswordBox IsPasswordRevealButtonEnabled="True" KeyDown="On_text_KeyDown" x:Name="SomePW" FontSize="50" KeyDown="On_text_KeyDown" Margin="0,0,0,190" Height="67" Width="363"/>
<Button Background="White" x:Name="Button_Go" Foreground="Black" Margin="20,0,0,190" Content="Go" FontSize="20" Click="Go_click" Height="67" Width="60"/>

在我的 C# 代码中,这是处理 PasswordBox 中按键的函数:

private void On_text_KeyDown(object sender, RoutedEventArgs e)
    {
        KeyEventArgs K = (KeyEventArgs)e;

        if (K.Key == Windows.System.VirtualKey.Enter)
        {
            //<TO-DO> Simulate Button Click Here
        }

    }

问题是我似乎找不到模拟按钮点击的方法...有人可以帮忙吗?

【问题讨论】:

  • 你问的是视觉上模拟按钮点击吗?
  • @ColeJohnson 这只是一个示例/测试应用程序...您的评论离题而且有点冒犯...
  • @Tim 不,我只想发布一个点击事件
  • @RedSerpant 好的。不冒犯。不过,当我看到那些东西时,它只会杀了我。对不起

标签: c# windows-8 windows-runtime visual-studio-2012 winrt-xaml


【解决方案1】:

简单地调用它是否有问题,或者您是否正在寻找一种通用方法来调用任何按钮上的 Click 事件,也许是为了自动化它?

Go_click(this, new RoutedEventArgs());

【讨论】:

  • 没有,但我正在寻找一种方法来发出点击事件的信号
  • 似乎可以通过编写一个桌面应用程序来控制您的 Metro Style 应用程序,但不能从 Metro Style 应用程序内部控制。见social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/…
  • 我没有找到其他方法,直接调用click方法。所以我会接受这个作为答案。我不会一直创建一个新应用程序,只是为了模拟用户在编辑框上按 Enter 键时的点击...谢谢。
【解决方案2】:

你可以试试这个:

ButtonAutomationPeer peer = new ButtonAutomationPeer( someButton );
IInvokeProvider invokeProv =  peer.GetPattern( PatternInterface.Invoke ) as InvokeProvider;
invokeProv.Invoke();

另一个选项如下:

SomeButton.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));

希望这会有所帮助!

【讨论】:

  • WinRT 不支持这些 API,我猜这个问题是关于什么的?
  • @FilipSkakun 是的,我实际上正在寻找替代方案
猜你喜欢
  • 2015-06-28
  • 2012-12-16
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多