在设计器中进行更改时,VB.Net 丢失事件处理程序

问题描述 投票:0回答:2

每当我在设计器中对表单进行更改时,VS 似乎都会从事件中删除所有句柄语句。我必须在表单的构造函数中使用 AddHandler 手动对它们进行编码,以将它们保留在那里。有什么见解吗?

示例:

Private Sub cboEntity_SelectionChangeCommitted(sender As Object, e As EventArgs) '<NOW MISSING>  Handles cboEntity.SelectionChangeCommitted

    If cboEntity.SelectedItem IsNot Nothing Then
        RaiseEvent ID_Changed(Me, cboEntity.SelectedItem)
    End If

End Sub

当前版本:

Microsoft Visual Studio 社区 2022 版本17.5.2 VisualStudio.17.Release/17.5.2+33502.453 微软.NET框架 版本 4.8.09032

安装版本:社区

Azure 应用服务工具 v3.0.0 17.5.317.37931 Azure 应用服务工具 v3.0.0

C#工具4.5.0-6.23128.14+651d32d8017cfcc60fcbd67383601fa9a3deb145 IDE 中使用的 C# 组件。根据您的项目类型和设置,可能会使用不同版本的编译器。

微软 JVM 调试器 1.0 支持将 Visual Studio 调试器连接到 JDWP 兼容的 Java 虚拟机

NuGet 包管理器 6.5.0 Visual Studio 中的 NuGet 包管理器。有关 NuGet 的更多信息,请访问 https://docs.nuget.org/

Visual Basic 工具 4.5.0-6.23128.14+651d32d8017cfcc60fcbd67383601fa9a3deb145 IDE 中使用的 Visual Basic 组件。根据您的项目类型和设置,可能会使用不同版本的编译器。

Visual F# 工具 17.5.0-beta.23053.5+794b7c259d9646a7eb685dad865aa27da7940a21 Microsoft Visual F# 工具

Visual Studio IntelliCode 2.2 Visual Studio 的 AI 辅助开发。

我必须在表单的构造函数中手动编写所有处理程序......

AddHandler cboEntity.SelectionChangeCommited,AddressOf Me.cboEntity_SelectionChangeCommited

这种情况已经持续了至少几周。还有其他人注意到这个问题吗?它是特定于 vb.net 而不是 c# 的吗?

任何帮助表示赞赏

vb.net forms winforms form-designer
2个回答
1
投票

这是 VS 中的一个已知问题。你说你使用的是VS v17.5.2。据我了解,这个问题已在 v17.5.3 中修复,而最新版本是 17.5.4。如果你更新 VS,这个问题应该不会再出现了。

至于修复您的代码,除了回滚您的更改之外,没有什么可以自动完成。如果您在任何地方都没有备份,那么您就不走运了。这是为什么每个人,无论其级别如何,都应该使用源代码控制的一个例子。然后您可以简单地回滚您的更改。我建议您研究一下源代码控制选项。免费选项包括 Azure DevOps 和 GitHub,但还有其他选项。

要修复代码,您可以手动将 Handles 子句添加回每个事件处理程序,也可以使用 Properties 窗口为每个相关事件选择现有方法。


0
投票

我正在使用 VS Community 17.7.3,我花了一个小时试图找出我的代码出了什么问题,然后才发现这些句柄子句消失了。

有趣的是,这曾经发生在我的所有句柄子句中。所以我没有注意到这次只有少数控件出现了这个问题。这次只是一组组合框。

这些组合框的唯一问题是,当组合框 A 中的选定值发生更改时,我使组合框 B 重新加载数据子集。当组合框 B 的选定索引发生更改时,我使组合框 C 加载数据子集。

所以可能与这些控件以某种方式交互有关,因为句柄子句保留用于其他所有内容。

希望他们能解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.