首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在运行时为动态创建的控件添加事件处理程序?

如何在运行时为动态创建的控件添加事件处理程序?
EN

Stack Overflow用户
提问于 2013-07-25 18:27:00
回答 3查看 15.3K关注 0票数 5

我在C# windows应用程序上工作。我的应用程序从自定义控件库获取控件(按钮、文本框、富文本框和组合框等),并在运行时动态地将它们放入窗体中。如何使用委托为控件创建事件处理程序?如何添加业务逻辑,特别是自定义控件点击事件?

例如:

我有user1,user2,user3,当user1登录时我只想显示“保存”按钮。当user2只显示“添加和删除”按钮,而用户3只显示“添加和更新”根据用户登录信息从DB tables.in创建的buttons.text框和按钮时,我如何处理动态创建表单时不同用户的按钮保存、添加、删除和更新事件(添加、保存、更新和删除)控件(保存、添加、删除和更新按钮对象来自相同的按钮类)

EN

回答 3

Stack Overflow用户

发布于 2013-07-25 18:32:05

使用匿名方法:

代码语言:javascript
运行
复制
Button button1 = new Button();
button1.Click += delegate
                    {
                        // Do something 
                    };

使用带有显式参数的匿名方法:

代码语言:javascript
运行
复制
Button button1 = new Button();
button1.Click += delegate (object sender, EventArgs e)
                    {
                        // Do something 
                    };

匿名方法的lambda语法:

代码语言:javascript
运行
复制
Button button1 = new Button();
button1.Click += (object sender, EventArgs e) =>
                    {
                        // Do something 
                    };

With方法:

代码语言:javascript
运行
复制
Button button1 = new Button();
button1.Click += button1_Click;

private void button1_Click(object sender, EventArgs e)
{
    // Do something
}

您可以在MSDN Documentation中找到更多信息。

票数 8
EN

Stack Overflow用户

发布于 2013-07-25 18:29:41

代码语言:javascript
运行
复制
var t = new TextBox();
t.MouseDoubleClick+=new System.Windows.Input.MouseButtonEventHandler(t_MouseDoubleClick);

private void t_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
     throw new NotImplementedException();
}

它正在向新的TextBox添加双击eventhandler

票数 3
EN

Stack Overflow用户

发布于 2013-08-01 22:12:40

我相信你可以这样做:

代码语言:javascript
运行
复制
if (userCanAdd)
    container.Controls.Add(GetAddButton());
if (userCanUpdate)
    container.Controls.Add(GetUpdateButton());
if (userCanDelete)
    container.Controls.Add(GetDeleteButton());

private Button GetAddButton() {
    var addButton = new Button();
    // init properties here

    addButton.Click += (s,e) => { /* add logic here */ };
    // addButton.Click += (s,e) => Add();
    // addButton.Click += OnAddButtonClick;

    return addButton;
}

private void OnAddButtonClick (object sender, EventArgs e) { 
    // add logic here
}

// The other methods are similar to the GetAddButton method.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17855428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档