【问题标题】:Some form events (Load, Shown) stopped working某些表单事件(加载、显示)停止工作
【发布时间】:2012-02-15 10:29:16
【问题描述】:

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

另一方面,许多事件确实有效,例如我试过 Activated,它可以工作,但对我没用。

.Designer.cs 中有相应的行:

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

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

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

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

我在网上寻找过类似的问题,但我找到的唯一解决方案是重新创建表单。这对我来说是最后的手段,因为它会相当耗时,而且我不喜欢这么轻易放弃。

那么我还应该去哪里看呢?我没有想法。

【问题讨论】:

  • 您使用的是 64 位版本的 Windows 吗?您是否在“输出”窗口中看到“第一次机会异常”?
  • 是的,它是 64 位 Windows 7。我的项目在 Net 2.0 下,我看到“第一次机会异常”是 Net 4.0 的东西。但是我在Net 4.0下重新编译过,输出窗口中没有这个消息。
  • 太棒了!虽然勾选 CLR 异常的抛出框对我不起作用,但我在没有调试器的情况下运行了应用程序,并且确实存在与数据源相关的异常。奇怪的错误。我想将您的评论标记为答案,但我认为 cmets 不可能。

标签: c# .net winforms events


【解决方案1】:

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

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

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

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

希望这会有所帮助!

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      在表单类的构造函数中检查InitializeComponent(); 的调用。 在没有调用的情况下,表单部分仍然有效。甚至某些特定于表单的事件也会被调用。但是不会创建表单上的控件,并且像 this.Load 这样的事件不再起作用。

      【讨论】:

        猜你喜欢
        • 2017-05-01
        • 2023-03-07
        • 1970-01-01
        • 2014-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多