C# winform 怎样获取某一个控件,它实际注册的所有事件(或者某一个事件)!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# winform 怎样获取某一个控件,它实际注册的所有事件(或者某一个事件)!相关的知识,希望对你有一定的参考价值。

比如一个按钮“单击事件”,“双击事件”等,但我实际只注册了一个单击事件,那我怎样获取这个单击事件所调用的函数了!如:

this.tsmiExit.Click += new System.EventHandler(this.tsmiExit_Click);
/// <summary>
/// 退出
/// </summary>
private void tsmiExit_Click(object sender, EventArgs e)

this.Dispose();


那我怎么就知道他一定就调用tsmiExit_Click而不是其他的函数了?
如:

private void FormPrinter_Load(object sender, EventArgs e)

//我要在这里获取 this.tsmiExit 所注册的所有事件,怎么做!

======================================
我的需求是:
1. 有一个菜单栏,一个工具栏;
2. 菜单栏里已经添加了按钮并且都已经注册了事件了;
3. 工具栏只是一个空的控件;
4. 现在要实现:动态给工具栏里添加菜单栏中的菜单按钮(包含的:文本,图片,事件)。
我这原有的思路是:直接将菜单栏中的控件添加到工具栏,但问题是两总控件类型不同所以不能添加。

lz不如直接说出你的需求,很少见到要“获取 this.tsmiExit 所注册的所有事件”的。
说出你想干什么,也许能给个思路。
个人觉的你实现你的需求的方法不太好。
参考技术A 声明。

在C# WinForm应用程序中如何获取当前窗体中被激发的控件名称?

在C# WinForm应用程序中我想获取当前被点击的控件的名称,用于判定当前是点击了那个控件。这个问题怎么实现?
不是说要获取是激活了那个窗体,而是要获取一个窗体中是点击了那个控件(窗体中包含很多控件),我自己是这样想的:
定义了一个全局变量 public string ActivedName;

然后通过这样实现:ActivedName=this.ActiveControl.Name.ToString();
为什么不对啊!!

参考技术A 每个事件都有有个Sender 参数,通过它即可判断,前提是你要能区分出那个类型的控件,比如:都是Button按钮,你可以这样做
Button source=(Button as sender);
if(source!==null)

//此时说明你点击的是按钮,具体那个按钮,要根据你设计时的需求来,比如你的按钮中的Tag标识类是那个按钮,那你就可以根据Tag属性来进行相关的判断操作

参考技术B 简单:

窗体的Activated事件中 获得当前窗体的name 就可以了

这个事件应该不用说了 事件属性里找到 直接双击
在这个函数里写
messagebox.show(this.name.tostring());就可以了 或者写成一个公共方法.
参考技术C 给每个控件加click事件.事件方法里写ActivedName="各个控件的名称"本回答被提问者采纳

以上是关于C# winform 怎样获取某一个控件,它实际注册的所有事件(或者某一个事件)!的主要内容,如果未能解决你的问题,请参考以下文章

【急】C# Winform 如何由ID获取该控件

C#winform怎样等所有控件加载完再显示窗体?C#透明窗体显示时闪现黑块怎么解决?

C#winform怎样等所有控件加载完再显示窗体?C#透明窗体显示时闪现黑块怎么解决?

C# winform如何计算控件上文字的实际宽度(像素)

c# winform 怎么获取控件

用C#在WINFORM中怎样把一个第三方软件嵌在一个程序中(类似于把它变成一个组件)