c# 如何判断控件上有事件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 如何判断控件上有事件相关的知识,希望对你有一定的参考价值。
在外部设置一个字段 ,例如 int num=1;在你需要判断的事件,例如A事件里 执行 num = 100;
然后在其他地方判断 num=1还是num=100 ,就知道A事件是否执行过追问
这个我很早以前就使用的了,但我感到麻烦,我希望能通过Click.GetInvocationList().length()>0栏判断,但click只能用click+=或-=
追答那就只能使用反射了~~~ 可惜 我不熟悉反射~~
参考技术A 你不会是想这样吧?((EventHandler)this.button1.Click).GetInvocationList().Length;追问
是的,但不能用
参考技术B 有个值C#如何订阅用户控件事件/用户控件没有实例名称
【中文标题】C#如何订阅用户控件事件/用户控件没有实例名称【英文标题】:C# How to subscribe to a UserControl event / UserControl has no instance name 【发布时间】:2021-11-30 21:16:29 【问题描述】:我创建了一个用户控件,它显示来自 mySQL 数据库的数据(任务主题、日期、时间)。
这个 UserControl 将根据任务的数量被创建多次。
我正在像这样创建 UserControl:
taskSubjectPanel.Controls.Clear();
DataTable taskdata = new DataTable();
sql.Connect("JonasW");
taskdata = sql.GetTasks(username);
sql.Disconnect();
if(taskdata.Rows.Count>0)
for (int i = 0; i < taskdata.Rows.Count; i++)
taskSubjectPanel.Controls.Add(new TaskSubject(taskdata.Rows[i][0].ToString(),
taskdata.Rows[i][1].ToString(),
taskdata.Rows[i][2].ToString(),
taskdata.Rows[i][3].ToString(),
taskdata.Rows[i][4].ToString(),
taskdata.Rows[i][5].ToString(),
taskdata.Rows[i][6].ToString()));
taskSubjectPanel.Refresh();
它被添加到流程布局面板中。 我创建了一个公共事件和一个公共数据表,我希望在单击 UserControl 时可以访问:
public event EventHandler TaskSubjectClick;
public DataTable taskdata;
这就是触发公共事件的地方:
private void RedirectMouseClick(object sender, EventArgs e)
sql.Connect("JonasW");
taskdata = sql.GetTaskData(absenderSQL, empfaengerSQL, subjectText.Text,
messageSQL,
dateText.Text, timeText.Text, finishedSQL);
sql.Disconnect();
this.TaskSubjectClick(this, e);
因为它没有名字,我如何访问事件和数据表?。
【问题讨论】:
将您的代码分成两部分,并将您的TaskSubject
实例实际分配给一个局部变量,以便您可以连接其事件并将其添加到 FlowLayoutPanel。
【参考方案1】:
创建自定义事件:
public delegate void TaskSubjectClick(DataTable taskdata);/*<- Put all data you want to pass here*/
public event TaskSubjectClick TaskSubjectClickEvent;
要调用你必须使用的事件调用:
TaskSubjectClickEvent.Invoke(yourdatatable); //Invoke the event and add your data you want to pass
在您的 Mainform 中,您必须按以下方式添加事件:
yourUserControl.TaskSubjectClickEvent += MainForm_TaskSubjectClickEvent;
【讨论】:
以上是关于c# 如何判断控件上有事件的主要内容,如果未能解决你的问题,请参考以下文章
C#中如何限制Textbox控件中只能输入数字,要能用退格的
c# 在groupbox控件中判断的内嵌的radiobutton是不是已选