事件自动分离

时间:2013-04-04 07:58:39

标签: c# winforms events designer

当我在Windows窗体中的控件上附加事件时,我遇到了一个问题,经过一段时间后,它会自动脱离。让我解释一下,例如,如果我有这行代码:

this.btnMainMove.MouseMove += btnMainMove_MouseMove;

然后我会在表单代码中编写方法btnMainMove_MouseMove,它可以运行几次,但是在设计器文件中,上面写的行自动删除,我只保留表单中的方法代码文件。

Click事件不会发生这种情况,但仅针对我创建的方法MouseMoveMoseOverKeyDown

我想知道为什么会发生这种情况以及如何防止这种情况发生。

谢谢大家!

4 个答案:

答案 0 :(得分:0)

我不知道问题是什么,但我可以建议你使用lambda表达式而不是设计师

this.btnMainMove.MouseMove += (sender,event) =>
{
    //your event logic here
};

但是在没有单击Visual Studio GUI中的事件的情况下执行此操作,因此您不使用设计器。

答案 1 :(得分:0)

您是手动编辑* .designer.cs文件吗? 最好避免它,但你可以在构造函数中订阅此事件,就在InitializeComponent()方法之后。

答案 2 :(得分:0)

设计人员仅在* .Designer.cs文件中进行更改...

如果在构造函数或表单的Load-Event中添加处理程序,设计人员将不会删除您的代码。

答案 3 :(得分:0)

Designer文件通常标有如下消息:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.18034
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

信息很清楚。变化可能会而且将会丢失。

例如,这些类型的文件通常都有一个可以手动执行的工具(使用上下文菜单选项),但通常在保存附带的*.cs文件,编译等后自动执行。

将您的事件附加到构造函数中,加载时或使用可视化设计器(它将根据布局文件和其他此类内容跟踪需求,但出于您的考虑)。