- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想知道某个控件是否具有分配给 Click 事件的方法。
Button b = new Button();
b.Click += (sender, e) => { };
/* What I want */
b.Click.Count // 1
我需要一些至少可以告诉我控件是否具有点击事件的某种方法的东西。
最佳答案
我已经查看了 Norman H 建议的主题( Determine list of event handlers bound to event )
它在“EventClick”的情况下对我有用
hasClickEventHandler = HasEventHandler(buttonControl, "EventClick");
Assert.AreEqual(hasClickEventHandler, true);
private bool HasEventHandler(Control control, string eventName)
{
EventHandlerList events =
(EventHandlerList)
typeof(Component)
.GetProperty("Events", BindingFlags.NonPublic | BindingFlags.Instance)
.GetValue(control, null);
object key = typeof(Control)
.GetField(eventName, BindingFlags.NonPublic | BindingFlags.Static)
.GetValue(null);
Delegate handlers = events[key];
return handlers != null && handlers.GetInvocationList().Any();
}
eventName 的可能值在这个 GetFields 命令的输出中:
typeof(Control).GetFields(BindingFlags.NonPublic | BindingFlags.Static)
所以可能的值:
...
[6]: {System.Object EventAutoSizeChanged}
[7]: {System.Object EventKeyDown}
[8]: {System.Object EventKeyPress}
[9]: {System.Object EventKeyUp}
[10]: {System.Object EventMouseDown}
[11]: {System.Object EventMouseEnter}
[12]: {System.Object EventMouseLeave}
[13]: {System.Object EventMouseHover}
[14]: {System.Object EventMouseMove}
[15]: {System.Object EventMouseUp}
[16]: {System.Object EventMouseWheel}
[17]: {System.Object EventClick}
[18]: {System.Object EventClientSize}
[19]: {System.Object EventDoubleClick}
[20]: {System.Object EventMouseClick}
[21]: {System.Object EventMouseDoubleClick}
[22]: {System.Object EventMouseCaptureChanged}
[23]: {System.Object EventMove}
[24]: {System.Object EventResize}
[25]: {System.Object EventLayout}
[26]: {System.Object EventGotFocus}
[27]: {System.Object EventLostFocus}
[28]: {System.Object EventEnabledChanged}
[29]: {System.Object EventEnter}
[30]: {System.Object EventLeave}
[31]: {System.Object EventHandleCreated}
[32]: {System.Object EventHandleDestroyed}
[33]: {System.Object EventVisibleChanged}
[34]: {System.Object EventControlAdded}
[35]: {System.Object EventControlRemoved}
[36]: {System.Object EventChangeUICues}
[37]: {System.Object EventSystemColorsChanged}
[38]: {System.Object EventValidating}
[39]: {System.Object EventValidated}
[40]: {System.Object EventStyleChanged}
[41]: {System.Object EventImeModeChanged}
[42]: {System.Object EventHelpRequested}
[43]: {System.Object EventPaint}
[44]: {System.Object EventInvalidated}
[45]: {System.Object EventQueryContinueDrag}
[46]: {System.Object EventGiveFeedback}
[47]: {System.Object EventDragEnter}
[48]: {System.Object EventDragLeave}
[49]: {System.Object EventDragOver}
[50]: {System.Object EventDragDrop}
[51]: {System.Object EventQueryAccessibilityHelp}
[52]: {System.Object EventBackgroundImage}
[53]: {System.Object EventBackgroundImageLayout}
[54]: {System.Object EventBindingContext}
[55]: {System.Object EventBackColor}
[56]: {System.Object EventParent}
[57]: {System.Object EventVisible}
[58]: {System.Object EventText}
[59]: {System.Object EventTabStop}
[60]: {System.Object EventTabIndex}
[61]: {System.Object EventSize}
[62]: {System.Object EventRightToLeft}
[63]: {System.Object EventLocation}
[64]: {System.Object EventForeColor}
[65]: {System.Object EventFont}
[66]: {System.Object EventEnabled}
[67]: {System.Object EventDock}
[68]: {System.Object EventCursor}
[69]: {System.Object EventContextMenu}
[70]: {System.Object EventContextMenuStrip}
[71]: {System.Object EventCausesValidation}
[72]: {System.Object EventRegionChanged}
[73]: {System.Object EventMarginChanged}
[74]: {System.Object EventPaddingChanged}
[75]: {System.Object EventPreviewKeyDown}
关于c# - 检查控件是否在 Click EventHandler 上有事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3212721/
我想问一下EventHandler之间的区别和 EventHandler . 之前我实现了一个 EventHandler ,带有自定义 EventArgs,可以从用户控件传递到父页面。 我想我需要申请
在C#中使用和使用有根本区别吗 event EventHandler和 EventHandler因为它们都产生与我所看到的相同的效果,除了使用 event 关键字会在智能感知中为您提供不同的图标。 最
我向事件添加了一个方法,但现在想在某些情况下从这些事件上删除该方法: public MyClassConstructor() { otherClassObj.OnMyDataReceived
我向事件添加了一个方法,但现在想在某些情况下从这些事件上删除该方法: public MyClassConstructor() { otherClassObj.OnMyDataReceived
最近一直在想这段代码有没有什么显着的区别: public event EventHandler SomeEvent; 还有这个: public delegate void MyEventHandler
假设你有这样的方法 private void FireEvent(EventHandler eventHandler, T eventArgs, string name) { var hand
我正在使用 GWT MVP 来开发应用程序。我看到 GWT MVP 代码中可以有两种事件处理程序,但我不太确定应该在哪个地方使用哪种事件处理程序: 1) AppController 中的 Handle
我看到一些代码使用 -= new EventHandler(anEvent) ,你能告诉我与 ' += new EventHandler' 有什么不同吗? 谢谢 最佳答案 一个将委托(delegate
我遇到了这样的 jQuery 片段: selector.eventHandler(...some code...).eventHandler(...some code...); 它有什么作用? 最佳答
我试图在指定时间内淡出一个文本框。此代码适用于 Windows Phone,但不适用于 Windows 8 应用程序。我进行了更改以修复尽可能多的错误。但我无法解决其中一个问题:cannot impl
我正在尝试在 Windows Phone 应用程序中实现一个计时器。它在 Windows Phone 应用程序 (Silverlight) 中工作正常,但它在 Windows Phone 空白应用程序
两者有什么区别? object.ProgressChanged += new EventHandler(object_ProgressChanged) object.ProgressChanged +
我已经阅读了一些关于此的主题,但我仍然不知道如何解决我的问题。我来自 Java,大部分是 C# 的新手 我想在动画结束时附加监听器: myStoryBoard.Completed += new Eve
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Can I customize automatic event handler generation in
我正在使用 axon 2.3.1 ,我有一个聚合类 public class MyAggregate extends AbstractAnnotatedAggregateRoot { @Aggre
我将 C# 与 Xamarin 结合使用,在使用 EventHandler 时出现此错误: The type or namespace name 'EventHandler' could not be
我正在阅读有关 EventHandlers 的 .NET 文档,但不理解来自 https://learn.microsoft.com/en-us/dotnet/standard/events/ 的这段
我的目的是重用从 ComboBox 类继承的 SelectedValueChanged 事件(该事件又从 ListControl 类继承) 在下面的代码中:SelectedValueChanged 标
以下代码允许在两个场景之间切换。 import javafx.application.*; import javafx.event.ActionEvent; import javafx.event.E
我有一个作业,其中我应该创建一个应用程序,将货币从卡塔尔里亚尔转换为 3 种选择之一(美元、欧元或英镑)。 我想成为一个酷男孩,并为我的应用程序提供了背景、标题和图标。但这还不够,我还决定不使用提交按
我是一名优秀的程序员,十分优秀!