c# - c# winform .net为用户控件创建按钮点击事件
问题描述
我对 c# winform (.net framework) 用户控件有疑问。
- 我有一个“通知”用户控制包含按钮的内容和一些信息。
- 我有一个“今日清单”表格,dinamycal 用数据库生成 UC。
我不知道如何为按钮创建事件。当我单击一个按钮时,我想从 UC 获取一个信息(标签)。
图片:
UC(我想得到'label2'文本)
生成的 UC
我试过这种方式但没有:
编辑:
加州大学
public event EventHandler<ActionTaskEventArgs> ActionTaskClicked;
private void button1_Click(object sender, EventArgs e)
{
string cardid = label2.Text;
var args = new ActionTaskEventArgs(cardid);
ActionTaskClicked?.Invoke(this, args);
}
public class ActionTaskEventArgs : EventArgs
{
public ActionTaskEventArgs(string taskId)
{
TaskId = taskId;
}
public string TaskId { get; }
}
形式
//UC generating:
if (statusz[i] == "Kiadott")
{
listItems[i] = new notifications();
listItems[i].Title = title[i];
listItems[i].Details = details[i];
listItems[i].Id = id[i].ToString();
listItems[i].Finish = "Ma";
listItems[i].BtnTxt = "Kezdés";
listItems[i].BtnVisible = true;
listItems[i].color = Color.FromArgb(254, 95, 85);
flowLayoutPanel1.Controls.Add(listItems[i]);
listItems[i].ActionTaskClicked += this.ActionTask_Clicked;
}
//
private void ActionTask_Clicked(object sender, notifications.ActionTaskEventArgs e)
{
MessageBox.Show(e.TaskId);
}
有人可以帮我吗?
现在我得到一个错误:
void UC_Click(object sender, EventArgs e)
{
//I gave an error for the below row! Can't convert button type to notifications type i guess.
notifications obj = (notifications)sender;
MessageBox.Show(obj.Id);
}
解决方案
您可以通过定义自定义添加/删除访问器将用户控件的事件“转发”到按钮:
// UC:
public event EventHandler ButtonClick
{
add => btn.Click += value;
remove => btn.Click -= value;
}
并且在您的主表单中订阅notifications.Click
(这似乎是生成的多个孩子的用户控件)。但实际上你应该订阅ButtonClick
一个子控件:
((UC)asd.Controls[0]).ButtonClick += Child0Click;
推荐阅读
- sql - 在 SQL Server 中删除数据库并使用 .bak 文件进行恢复。如果还原失败,则回滚到以前的状态
- java - 如果功能接口出现在 Java 版本 8 中,那么 @FunctionalInterface 注释如何在 Java 版本 7 或更低版本中工作
- powershell - 使用 PowerShell 连接到 Mysql 时出现以下错误
- algorithm - 将 IP 地址映射到城市
- c# - Apache Ignite:客户端和服务器配置
- rest - REST API 托管在 localhost 的 85 端口上。如何在 Angular 12 中使用它们
- sharepoint - 从 SharePoint 2013 迁移到 2019
- php - 如何在 Laravel 7 中导入具有表关系的 Excel?
- angular - 在数组上设置值,它不会更新子组件 - Angular
- python - 使用 str 输入倒计时到工作日的简单 python 输入 while 循环