2

这是我的第一个 Windows 窗体项目,我对如何使用 Windows 窗体设计器工具修复错误感到有点困惑。我希望有人可以帮助我了解修复设计器错误所涉及的工作流程。

我已经在 VB.NET 中获得了一个模板应用程序来修改。我已经多次经历了类似以下工作流程:演示应用程序包含一个下拉列表选择器,我需要一个数字向上/向下条目。应该不难改吧?在 Visual Studio 中进行零培训后,我单击该对象并搜索“属性”,希望在那里进行更改。没运气。按照这个流程图,我然后右键单击下拉菜单并选择“转换”,选择一个数字向上/向下对象,然后 - 你瞧 - 一个数字向上/向下条目出现在表单上。

我切换到 Project.vb 文件来修改对象的事件处理程序,添加MessageBox.Show调用以确保一切正常,并构建项目。

我收到两个错误:

Error   2   Type 'MyCorp.ProcessControl.ControlLibrary.ToolStripNumericUpDown' is not defined.  C:\HMI\HMI.Designer.vb  192
Error   3   Type 'Mycorp.ProcessControl.ControlLibrary.ToolStripNumericUpDown' is not defined.  C:\HMI\HMI.Designer.vb  1978

相关的源代码行读取(分别)

192:  Me.tscb_PartNumberSelector = New Mycorp.ProcessControl.ControlLibrary.ToolStripNumericUpDown()
1978: Friend WithEvents tscb_PartNumberSelector As MyCorp.ProcessControl.ControlLibrary.ToolStripNumericUpDown

显然,我使用的是自定义 ControlLibrary,它没有数字上/下工具。看起来我必须去编写那个库的人添加一个,使用系统标准 NumericUpDown,将其转换回 DropDownList 并在该列表中输入可能的数字,或者使用普通的旧文本条目。任何事情都可以保持发展!

所以,我点击了“HMI [设计]”选项卡,它在我面前抛出了一个大警告页面:

为了防止在加载设计器之前可能丢失数据,必须解决以下错误:

设计者无法处理第 191 行的代码:

Me.tscb_PartNumberSelector = New Gentex.ProcessControl.ControlLibrary.ToolStripNumericUpDown() 

“InitializeComponent”方法中的代码由设计者生成,不应手动修改。请删除所有更改并尝试再次打开设计器。

此错误的实例(一)
1. HMI HMI.Designer.vb Line:191 Column:1
Show Call Stack


解决此错误的帮助 找不到与此错误相关的帮助主题。检查 Windows 窗体设计时错误列表

有关此错误的论坛帖子
在 MSDN 论坛中搜索与此错误相关的帖子

幸运的是,我将 Hmi.Designer.vb 文件置于版本控制之下,并且可以在必要时还原所有内容,但是要还原的更改位于严厉警告不应修改它们的函数中。

这里的预期工作流程是什么?

  1. 还原对项目的所有更改,然后重试。
    这使得用户在没有版本控制的情况下操作很困难(不得不重做整个项目,而不是按几次'ctrl-z'),并且它丢失了我所做的一些其他更改(大概是没有损坏)。
  2. 在标记为“请勿修改”的代码中还原 Designer.vb 文件中的逐行更改
    这很容易出错,因为有多个位置可以更改代码 - 在 HMI.vb 中,以及 HMI.Designer.vb 中的多个位置.
  3. 忽略并继续,并尝试使用设计器还原更改。
    这似乎加剧了我遇到的问题并生成了重复的代码。

我最终选择了 1,因为我无法让其他人工作,但我希望再次遇到这个问题。我应该如何处理?

4

1 回答 1

1

设计器中的代码就像任何其他代码一样,除非您知道旧代码的作用和更改的作用,否则您不应该更改它,但如果您确实知道,那么它可以安全地完成。

需要牢记的主要警告是,代码会被读取然后重新生成——如果你在里面放了一些东西让它工作,但设计者不理解它,你就不能使用设计器进行进一步的更改. 你会想要避免这种情况。

在任何特定时间最好做的事情会根据情况而变化,经常还原将是最简单和最直接的方法,但如果有必要,可以安全地编辑生成的代码。

于 2012-09-18T20:36:47.077 回答