C# - 更改现有事件处理程序的参数

时间:2011-02-15 20:01:20

标签: c# winforms

所以,这是交易。我想做的事情必须非常简单,但我找不到一个不涉及建立一些课程的解决方案,这甚至不值得我麻烦。

在常规TextBox中有OnKeyUp事件。它的处理程序签名需要发送对象(当然)和KeyEventArgs对象。我想要的只是用一个CancelEventArgs对象替换这个KeyEventArgs。或者,即便如此,我想说我只想在处理程序中添加一个新的CancelEventArgs参数。换句话说,我想要的是如果按下错误的键,整个事件就会被取消。

我看到有一个看似相似问题的话题,但那不行。 有什么指针吗?

2 个答案:

答案 0 :(得分:4)

SuppressKeyPress的KeyEventArgs对象的KeyDown event属性设置为true以防止用户输入。

答案 1 :(得分:2)

不,您无法向现有事件处理程序添加额外参数。毕竟,TextBox将引发该事件 - 它如何知道如何为您的额外参数,甚至您的不同参数做什么?有人告诉它将调用KeyEventHandler,因此它认为它可以使用普通参数调用该事件处理程序。

TextBox

的角度来看,您认为这是如何工作的?

正如SemVanmeenen建议的那样,你可能会发现SuppressKeyPress就是你想要的,尽管这与“取消”整个事件并不完全相同。值得确保您理解为什么不能更改事件处理程序参数。

如果上述方法无效,您可能需要阅读我的article on events and delegates,以便更好地了解它们的工作原理。