以编程方式将 Click EventHandler 添加到 Button
Programmatically add Click EventHandler to Button
我正在使用一种方法以编程方式创建按钮,我想附加一个 Click 事件处理程序。但是,该数据当前来自不能与 += RoutedEventHandler
.
一起使用的字符串参数
public Button CreateButton(string Display, string Name, string ClickEventHandler)
{
Button Btn = new Button
{
Content = Display,
Name = "Btn_" + Name
};
Btn.Click += new RoutedEventHandler(ClickEventHandler);
return Btn;
}
void Btn_save_Click(object sender, RoutedEventArgs e)
{
throw new NotImplementedException();
}
// later
Button MyButton = CreateButton("Save", "save", "Btn_save_Click");
错误是 RoutedEventHandler
需要 Method
而不是 String
。是否有不同的方法以编程方式绑定允许这种行为的事件?
谢谢
我不完全确定你想用这个来完成什么。
这里是如何在 运行 时间创建事件的示例。
public void CreateButton()
{
Button Btn = new Button();
Btn.Click += new EventHandler(btn_Clicked);
}
private void btn_Clicked(object sender, EventArgs e)
{
// Your Logic here
}
据我了解,您希望传递触发 Click
事件时应执行的方法。你可以按照以下方式做一些事情:
Button button = CreateButton("Save", "save", (s, e) => SomeOnClickEvent(s, e));
Button button2 = CreateButton("Create", "create", (s, e) => SomeOtherOnClickEvent(s, e));
public Button CreateButton(string display, string name, Action<object, EventArgs> click)
{
Button b = new Button()
{
Content = display,
Name = $"Btn_{name}"
};
b.Click += new EventHandler(click);
return b;
}
void SomeOnClickEvent(object sender, EventArgs e)
{
}
void SomeOtherOnClickEvent(object sender, EventArgs e)
{
}
我正在使用一种方法以编程方式创建按钮,我想附加一个 Click 事件处理程序。但是,该数据当前来自不能与 += RoutedEventHandler
.
public Button CreateButton(string Display, string Name, string ClickEventHandler)
{
Button Btn = new Button
{
Content = Display,
Name = "Btn_" + Name
};
Btn.Click += new RoutedEventHandler(ClickEventHandler);
return Btn;
}
void Btn_save_Click(object sender, RoutedEventArgs e)
{
throw new NotImplementedException();
}
// later
Button MyButton = CreateButton("Save", "save", "Btn_save_Click");
错误是 RoutedEventHandler
需要 Method
而不是 String
。是否有不同的方法以编程方式绑定允许这种行为的事件?
谢谢
我不完全确定你想用这个来完成什么。
这里是如何在 运行 时间创建事件的示例。
public void CreateButton()
{
Button Btn = new Button();
Btn.Click += new EventHandler(btn_Clicked);
}
private void btn_Clicked(object sender, EventArgs e)
{
// Your Logic here
}
据我了解,您希望传递触发 Click
事件时应执行的方法。你可以按照以下方式做一些事情:
Button button = CreateButton("Save", "save", (s, e) => SomeOnClickEvent(s, e));
Button button2 = CreateButton("Create", "create", (s, e) => SomeOtherOnClickEvent(s, e));
public Button CreateButton(string display, string name, Action<object, EventArgs> click)
{
Button b = new Button()
{
Content = display,
Name = $"Btn_{name}"
};
b.Click += new EventHandler(click);
return b;
}
void SomeOnClickEvent(object sender, EventArgs e)
{
}
void SomeOtherOnClickEvent(object sender, EventArgs e)
{
}