我想从我的C#Winform中删除keyup
事件:
private void txtInputBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Return)
{
cmdSend.PerformClick();
}
}
如果我注释掉或删除此功能,我在表单的设计视图中出现错误:
"设计师无法处理未知名称&t; txtInputBox_KeyDown'在 第66行。方法中的代码' InitializeComponent'生成 由设计师,不应手动修改。请删除任何 更改并再次尝试打开设计师。"
该程序也不会编译。
如果我尝试删除表单上的任何事件处理程序代码,就会发生这种情况。我在VB.NET和VB.NET的背景下教自己C#我可以毫无问题地删除事件处理程序代码。
答案 0 :(得分:3)
这是因为在 Designer.cs 中注册了事件处理程序,并且只是从它背后的代码中删除它时,它不会从 Designer.cs 强>
您应该通过控制属性从表单设计器视图中删除事件,以便不会出现此问题,或者从 Designer.cs 删除事件注册行,如下所示:
SomeTextBox.KeyUp += SomeTextBox_KeyUp
答案 1 :(得分:3)
那是因为在C#中,当您在设计器中添加函数时,设计师会以编程方式将这些函数添加到事件中。
在解决方案资源管理器窗口中,展开Form1.cs
并在那里打开Form1.Designer.cs
文件:
然后找到函数:
private void InitializeComponent()
并删除将事件处理程序注册到事件的行。它会在中间有一个+=
运算符,如下所示:
您的活动将位于第66行,如下所示:
this.txtInputBox.KeyDown += new System.EventHandler(this.txtInputBox_KeyDown);
答案 2 :(得分:2)
在Visual Studio自动生成的设计器代码中,事件仍然链接到这个不存在的函数。
在解决方案资源管理器中,找到您的Form.Designer.cs文件(它位于主Form.cs下的子节点中),或使用Find in Solution函数查找显示
的行。txtInputBox.KeyDown += new System.EventHandler(txtInputBox_KeyDown);
删除该行,它应该再次起作用。