繁体   English   中英

以编程方式将 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 是否有不同的方法来以编程方式绑定允许这种行为的事件? 谢谢

据我了解,您希望传递在触发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)
{

}

我不完全确定你想用这个来完成什么。

以下是如何在运行时创建事件的示例。

public void CreateButton()
{
  Button Btn = new Button();

  Btn.Click += new EventHandler(btn_Clicked);


}

private void btn_Clicked(object sender, EventArgs e)
{
 // Your Logic here
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM