我有两种几乎相同的方法.唯一的区别是我点击按钮上的click事件有两个单独的事件.有没有一种干净的方法将其转换为一个方法调用?我可以在方法参数列表中传入事件名称吗?如果我实例化两个不同的事件并将它们传递给同一个方法,我需要每个事件都拥有它自己的事件处理方法定义(crowdDynoButtonClick_Event和playerDynoButtonClick_Event)
private void loadChildCrowdObjectsOnScreen(UniformGrid ug) {
foreach (PlayerCrowdObjectBO childObject in childCrowdObjectOC) {
Button b = new Button();
b.Tag = childObject.ObjectNbr;
b.Height = 25;
b.Margin = new Thickness(5);
b.Content = childObject.ObjectName + " #" + childObject.ObjectNbr;
b.Click += crowdDynoButtonClick_Event;
ug.Children.Add(b);
}
}
private void loadChildPlayerObjectsOnScreen(UniformGrid ug) {
foreach (PlayerCrowdObjectBO childObject in childPlayerObjectOC) {
Button b = new Button();
b.Tag = childObject.ObjectNbr;
b.Height = 25;
b.Margin = new Thickness(5);
b.Content = childObject.ObjectName + " #" + childObject.ObjectNbr;
b.Click += playerDynoButtonClick_Event;
ug.Children.Add(b);
}
}
Run Code Online (Sandbox Code Playgroud)
你可以去提取事件处理程序
private void loadCrowdObjectsOnScreen(UniformGrid ug, RoutedEventHandler handler) {
foreach (PlayerCrowdObjectBO childObject in childCrowdObjectOC) {
Button b = new Button();
b.Tag = childObject.ObjectNbr;
b.Height = 25;
b.Margin = new Thickness(5);
b.Content = childObject.ObjectName + " #" + childObject.ObjectNbr;
b.Click += handler;
ug.Children.Add(b);
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我不确定您的handler类型是什么,您可能需要对其进行增强以应用于您的代码.
| 归档时间: |
|
| 查看次数: |
147 次 |
| 最近记录: |