2011-02-24 100 views
12

我有一个在运行时动态生成的按钮数组。我有我的代码中按钮单击的功能,但我找不到在代码中设置按钮的单击名称的方法。所以,在C#代码中点击WPF按钮

什么是代码等效XAML:

<Button x:Name="btn1" Click="btn1_Click">

或者,我应该怎么地方 “????”在下面的代码:

Button btn = new Button()
btn.Name = "btn1";
btn.???? = "btn1_Click";

回答

31
Button btn = new Button(); 
btn.Name = "btn1"; 
btn.Click += btn1_Click; 

private void btn1_Click(object sender, RoutedEventArgs e) 
{ 
    // do something 
} 
9

下应该做的伎俩:

btn.Click += btn1_Click; 
3
// sample C# 
public void populateButtons() 
{ 
    int xPos; 
    int yPos; 

    Random ranNum = new Random(); 

    for (int i = 0; i < 50; i++) 
    { 
     Button foo = new Button(); 
     Style buttonStyle = Window.Resources["CurvedButton"] as Style; 

     int sizeValue = ranNum.Next(50); 

     foo.Width = sizeValue; 
     foo.Height = sizeValue; 
     foo.Name = "button" + i; 

     xPos = ranNum.Next(300); 
     yPos = ranNum.Next(200); 

     foo.HorizontalAlignment = HorizontalAlignment.Left; 
     foo.VerticalAlignment = VerticalAlignment.Top; 
     foo.Margin = new Thickness(xPos, yPos, 0, 0); 

     foo.Style = buttonStyle; 

     foo.Click += new RoutedEventHandler(buttonClick); 
     LayoutRoot.Children.Add(foo); 
    } 
} 

private void buttonClick(object sender, EventArgs e) 
{ 
    //do something or... 
    Button clicked = (Button) sender; 
    MessageBox.Show("Button's name is: " + clicked.Name); 
} 
1

我不认为WPF支持什么你正试图实现ie 。使用方法名称或btn1.Click =“btn1_Click”将按钮分配给按钮。您必须使用上述答案中建议的方法,即使用适当的方法注册按钮点击事件 btn1.Click + = btn1_Click;

0

您应该放置在线下方

btn.Click = btn.Click + btn1_Click;