我正在制作wpf应用程序,我在WrapPanel中有按钮,如何以编程方式对其中一个按钮执行单击(在随机按钮上)?
答案 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方法的内容移动到自己的函数中然后从按钮调用它总是更有效。