我在C# windows应用程序上工作。我的应用程序从自定义控件库获取控件(按钮、文本框、富文本框和组合框等),并在运行时动态地将它们放入窗体中。如何使用委托为控件创建事件处理程序?如何添加业务逻辑,特别是自定义控件点击事件?
例如:
我有user1,user2,user3,当user1登录时我只想显示“保存”按钮。当user2只显示“添加和删除”按钮,而用户3只显示“添加和更新”根据用户登录信息从DB tables.in创建的buttons.text框和按钮时,我如何处理动态创建表单时不同用户的按钮保存、添加、删除和更新事件(添加、保存、更新和删除)控件(保存、添加、删除和更新按钮对象来自相同的按钮类)
发布于 2013-07-25 18:32:05
使用匿名方法:
Button button1 = new Button();
button1.Click += delegate
{
// Do something
};使用带有显式参数的匿名方法:
Button button1 = new Button();
button1.Click += delegate (object sender, EventArgs e)
{
// Do something
};匿名方法的lambda语法:
Button button1 = new Button();
button1.Click += (object sender, EventArgs e) =>
{
// Do something
};With方法:
Button button1 = new Button();
button1.Click += button1_Click;
private void button1_Click(object sender, EventArgs e)
{
// Do something
}您可以在MSDN Documentation中找到更多信息。
发布于 2013-07-25 18:29:41
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
发布于 2013-08-01 22:12:40
我相信你可以这样做:
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.https://stackoverflow.com/questions/17855428
复制相似问题