如何解决无法在 C# 中将类型“System.EventHandler”隐式转换为“System.Windows.Forms.KeyPressEventHandler”
我正在尝试制作一个只接受数字的文本框。
private void depositTextBox_KeyPress(object sender,KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) &&
(e.KeyChar != '.'))
{
e.Handled = true;
}
// only allow one decimal point
if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
{
e.Handled = true;
}
}
这是在设计器中。
this.depositTextBox.KeyPress += new System.EventHandler(this.depositTextBox_KeyPress);
附加错误。
No overload for 'depositTextBox_KeyPress' matches delegate 'EventHandler'
解决方法
这是因为 KeyPress 是 KeyPressEventHandler
类型的事件,而不是您尝试使用的 EventHandler
(请参阅代码中的 new System.EventHandler
)。
要么使用正确的类型 new System.Windows.Forms.KeyPressEventHandler
,要么直接使用 this.depositTextBox.KeyPress += this.depositTextBox_KeyPress;
分配方法
更准确地说,错误实际上发生在 System.EventHandler
构造函数内部,因为它需要一个签名为 void methodName(object,EventArgs)
的方法,而您的方法的签名为 void mehtodName(object,System.Windows.Forms.KeyEventArgs)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。