我正在使用C#windows应用程序。我的应用程序从自定义控件库获取控件(按钮,文本框,富文本框和组合框等),并在运行时动态地将它们放入表单中。我如何使用委托创建该控件的事件处理程序?以及如何在特定的自定义控件点击事件中添加业务逻辑?
例如:
我有user1,user2,user3,当user1登录时我想只显示“保存”按钮。当user2然后只显示“添加和删除”按钮,用户3只显示“添加和更新”按钮。文本框和按钮创建的按钮登录从DB表中获取的信息。在这种情况下我如何处理不同的事件(添加,保存,更新,删除)为动态创建表单时的不同用户按钮保存,添加,删除和更新控件(保存,添加,删除和更新按钮对象来自相同的按钮类)
答案 0 :(得分:4)
使用匿名方法:
Button button1 = new Button();
button1.Click += delegate
{
// Do something
};
使用方法:
Button button1 = new Button();
button1.Click += button1_Click;
private void button1_Click(object sender, EventArgs e)
{
// Do something
}
您可以在MSDN Documentation中找到更多信息。
答案 1 :(得分:3)
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
答案 2 :(得分:2)
我相信你可以这样做:
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.