如何以编程方式单击WPF中的RANDOM按钮?

时间:2018-04-24 10:38:35

标签: c# .net wpf

我正在制作wpf应用程序,我在WrapPanel中有按钮,如何以编程方式对其中一个按钮执行单击(在随机按钮上)?

2 个答案:

答案 0 :(得分:1)

我在这里做的是获取包装面板的所有子controls,假设您的包装面板上只有按钮。然后我生成0到孩子总数之间的随机数,然后提高事件。 (我目前正在编辑和格式化我的答案)

XAML:

<WrapPanel Name="wrapPanel">
    <Button Name="btnClickMe1" Content="Button" HorizontalAlignment="Left" Margin="166,109,0,0" VerticalAlignment="Top" Width="75" Click="ClickMe1"/>
    <Button Name="btnClickMe12" Content="Button" HorizontalAlignment="Left" Margin="166,109,0,0" VerticalAlignment="Top" Width="75" Click="ClickMe2"/>
</WrapPanel>

C#:

public static int GetRandomNumber(int max)
{
    lock (getrandom) // synchronize
    {
        return getrandom.Next(max);
    }
}

private static readonly Random getrandom = new Random();
private void ClickMe1(object sender, RoutedEventArgs e)
{
    MessageBox.Show("You clicked me 1");
}

private void ClickMe2(object sender, RoutedEventArgs e)
{
    MessageBox.Show("You clicked me 2");
}

private void TestPeformClick(object sender, RoutedEventArgs e)
{
    int index = GetRandomNumber(wrapPanel.Children.Count);
    RoutedEventArgs newEventArgs = new RoutedEventArgs(Button.ClickEvent);
    wrapPanel.Children[index].RaiseEvent(newEventArgs);
}

答案 1 :(得分:0)

您可以使用参数beeing null

调用OnClick函数
public static void main() 
{
  Button_OnClick(null, null);
}

private void Button_OnClick(object sender, RoutedEventArgs e)
{
  //doStuff
}

如果您想访问发件人或EventArgs,您还必须传递它们。

尽管如此,将OnClick方法的内容移动到自己的函数中然后从按钮调用它总是更有效。