我是C#和OOP的新手,但仍在努力将其包围住。 看了很多教程,我确实了解了一些,其他的却不是很多...
无论如何,我试图给自己解决问题,然后解决它们。
这是问题所在。
我知道如何在运行时对WPF创建一些控件:
private void addButton()
{
for (int i = 0; i < 10; i++)
{
var btnX = new Button { Content = "btn" + i };
btnX.Click += ClickHandler1;
stPanel.Children.Add(btnX);
}
}
但是,现在,我希望此方法存在于单独的类中,该类可以从另一个类调用,传递一些参数,然后在传递参数的类中创建按钮。
现在在我的Programs.cs中,我有:
private void addButtonX()
{
for (int i = 0; i < 10; i++)
{
CreateGroupButtons btn = new CreateGroupButtons();
stPanel.Children.Add(btn.addButton(i));
}
}
我上课了
class CreateGroupButtons
{
public Button addButton(int num)
{
var btnX = new Button { Content = "btn" + num };
return btnX;
}
}
创建了按钮,但是现在仅存在一个问题,我不确定如何解决该问题:
如何添加Handler事件?
btnX.Click + = ClickHandler1;
谢谢!
答案 0 :(得分:2)
我假设您正在使用System.Windows.Controls.Button
类?如果是这样,则ButtonBase
是Button
派生的基类,它定义了一个名为Click的event
。要添加事件处理程序,您只需订阅此event
。
btnX.Click += (sender, args) => { /* Your code here */ }
更新
如果您希望addButton方法订阅该方法之外的方法,则可以发送Action
,该方法可以在event handler
内触发
public Button AddButton(int num, Action actionToPerform)
{
var btnX = new Button { Content = "btn" + num };
btnX.Click += (sender, args) => { actionToPerform(); }
return btnX;
}
然后从外部
var btns = new CreateGroupButtons()
btns.AddButton(1, () => { MessageBox.Show("Hello, World"); }; );