C # WPF нажмите случайную кнопку - PullRequest
0 голосов
/ 05 июня 2018

У меня есть несколько кнопок в WPF, которые выполняют метод Click

 <Grid Margin="0,0,490,170">
    <Grid.RowDefinitions>
        <RowDefinition Height="0*"/>
        <RowDefinition Height="18*"/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Button x:Name="button00" HorizontalAlignment="Left" Height="82" Margin="0,1,-114,-7" Grid.RowSpan="3" VerticalAlignment="Top" Width="114" Click="Button_Click"/>
    <Button x:Name="button02" Content="" HorizontalAlignment="Left" Height="82" Margin="228,0,-342,-7" Grid.RowSpan="3" VerticalAlignment="Bottom" Width="114" Click="Button_Click"/>
    <Button x:Name="button01" Content="" HorizontalAlignment="Left" Height="82" Margin="114,1,-228,-7" Grid.RowSpan="3" VerticalAlignment="Top" Width="114" Click="Button_Click" />
...
</Grid>

Мой щелчок - это

private void Button_Click(object sender, RoutedEventArgs e)
{
    var button = sender as Button;
    methodDoingStuff(button);
}

, и я попытался автоматизировать тот компьютер, который может случайным образом нажимать на кнопки,Вот так

Random rnd = new Random();
int x = rnd.Next(2);
int y = rnd.Next(2);
Button btn = new Button();
btn.Name = "button" +(x.ToString() + y.ToString());
Button_Click(btn);

Но я не могу этого сделать.Любые советы, как я могу делать такие вещи?

Ответы [ 3 ]

0 голосов
/ 05 июня 2018

Попробуйте использовать следующий код:

Random rnd = new Random();
            int x = 0;
            int y = rnd.Next(2);
            var buttonName = "button" + (x.ToString() + y.ToString());
            var buttonControl = this.FindName(buttonName) as Button;
            if (buttonControl != null)
            {
                buttonControl.RaiseEvent(new RoutedEventArgs(Button.ClickEvent, buttonControl));
            }
0 голосов
/ 05 июня 2018

Вы можете просто создать список объектов, содержащий ссылки на кнопки.

List<Button> buttonList = new List<Button> {button00, button01, button02};

Затем сделать что-то вроде этого:

Random rnd = new Random();
int selection = rnd.Next(0, 3);
buttonList[selection].RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent));
0 голосов
/ 05 июня 2018

Попробуйте:

Button[] allButtons = grid.Children.OfType<Button>().ToArray();
Random rnd = new Random();
int x = rnd.Next(0, allButtons.Length);
Button btn = allButtons[x];
btn.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent));

... где "grid" - это x:Name из Grid в вашем XAML:

<Grid x:Name="grid" Margin="0,0,490,170"> ...
...