某些表单事件(Load,Shown)停止工作

时间:2012-02-15 10:29:16

标签: c# .net winforms events

我有一个包含多个表单的项目。对项目数据集进行一些更改后,一个表单上的Load事件停止工作(尽管表单显示正确)。表单本身没有变化。作为一个快速的解决方法,我已经创建了Shown处理程序(通过VS IDE)并将我的代码放在那里,但它也没有触发(我已经创建了测试消息框以确保它不是调试器的问题)。

另一方面,许多事件都有效,例如我已经尝试过Activated但它有效,但它对我没用。

.Designer.cs中有适当的行:

 this.Load += new System.EventHandler(this.FormZlecenie_Load);

我将与此表单连接的三个文件(.cs,.resx,.Designer.cs)与我在更改数据集之前所做的备份进行了比较,并且几乎没有差异(备份工作没有问题) 。

我不想恢复备份,因为我需要在数据集中进行这些更改,而且还有很多。

我还删除了所有二进制文件夹(bin,obj),但没有成功。

我在网上寻找类似的问题,但我找到的唯一解决方案是重新创建表单。这对我来说是最后的选择,因为它会非常耗时,我不想轻易放弃。

那我还应该看看哪儿?我没有想法。

3 个答案:

答案 0 :(得分:1)

我会进入表单设计器并确保事件显示在属性窗口中。如果它存在,则删除它,构建项目,然后再次手动重新添加。

如果这不起作用,请进入表单的构造函数,并使用您在问题中提供的代码示例手动注册事件。调试以查看事件是否触发。

接下来,尝试使用不同的方法处理事件处理程序。只是使用“this.load + =”时自动生成的那个。

最后,在最糟糕的情况下,您可以重新创建表单并复制当前表单中的元素。有时设计师搞砸了表格,无法修复自己。

希望这有帮助!

答案 1 :(得分:1)

查看代码中的绑定。有时绑定错误时会忽略事件(即绑定到Thread.IsAlive - 我的情况)。

答案 2 :(得分:0)

检查表单类的构造函数中InitializeComponent();的调用。 表格部分仍然无需通话即可运行。甚至可以调用某些特定形式的事件。但是不会创建表单上的控件,而this.Load之类的事件将不再起作用。