【问题标题】:Cannot rename control to that of a control I deleted无法将控件重命名为我删除的控件
【发布时间】:2018-11-07 18:22:06
【问题描述】:

我在 VB.Net 中遇到了两个用户控件的问题。我正在使用VS2012。 UserControl 是一个名为DataDriver 的面板,它在运行时在表单上动态创建。在 DataDriver 中有一个控件,它是项目中定义的另一个 UserControl 的实例,名为 DataLink。 DataLink 允许用户选择一个数据源(实际上是一个命名的连接字符串)。两个 UserControl 都定义在同一个项目中。

在过去 24 小时内的某个时间,我在设计模式下打开 DataDriver,它显示了我经常看到的屏幕:“为防止在加载设计器之前可能丢失数据,请执行以下操作错误必须解决:”上面有一个“忽略并继续”链接,我点击了它。我不完全确定为什么会出现这种情况,但确实如此。

打开 DataDriver 后,我发现 UserControl DataLink 消失了。我创建了它的一个新实例并尝试将其重命名为其原始名称 (ucDataLink),但出现错误:

属性值无效。已经有一个名为的组件 'ucDataLink'。组件必须具有唯一的名称,并且名称必须是 不区分大小写。名称也不能与任何人的名称冲突 继承类中的组件。

我已经关闭了项目,通过了 UserControl DataDriver 的三个组件(设计器、resx 和代码)并删除了对 ucDataLink 的任何引用,并且仍在继续提出这个问题错误。我可能会使用不同的名称,但这是一个有意义的名称,我想知道如何解决它。

额外信息。 DataDriver 控件仅在运行时实例化。创建它的表单有一个被调用的公共方法。表单如下设置动态控件,然后使用 me.ShowDialog() 显示。

moActionEdit = New DataDriver
moActionEdit.Globals = g
moActionEdit.ConnectionName = mcConnectionName
moActionEdit.left = 0
moActionEdit.Top = 0
moActionEdit.width = pnl.Width
moActionEdit.Height = pnl.Height
moActionEdit.Anchor = AnchorStyles.Top + AnchorStyles.Left + AnchorStyles.Right + AnchorStyles.Bottom
moActionEdit.Job = moJob
pnl.Controls.Add(moActionEdit)
moActionEdit.Visible = True
If Not moActionEdit.Init() Then
    moActionEdit.Visible = False
    Throw New DolphinException("Could not initialise data entry panel for this action type correctly.", True)
End If

如何成功地将我的 UserControl 重命名为 ucDataLink?

【问题讨论】:

  • 在 Visual Studio 中,您可以使用“在文件中查找”在与您的项目关联的所有文件中搜索 ucDataLink ...也许您在某处找到它...
  • 这个 UserControl 是在表单的加载事件中动态创建的吗?在这种情况下,当您在设计器中查看表单时也会创建它。我通过 'if (DesignMode || LicenseManager.UsageMode == LicenseUsageMode.Designtime) {} ` 解决了这个问题
  • @GuidoG - 在有关如何实例化的问题中添加了一些额外信息。 DataDriver 在设计主窗体时没有实例化。但是,在编辑 DataDriver 时,DataLink 会在 DataDriver 中实例化。

标签: vb.net winforms user-controls


【解决方案1】:

有时,当您删除一个控件时,它不会在.Designer 文件中被删除。这不是一件特别安全的事情,所以要小心。

在解决方案资源管理器中,单击按钮以显示所有文件。

然后在解决方案资源管理器中,单击表单旁边的右箭头。

在展开的列表中,您会看到类似于 Form1.Designer.vb 的文件

我强烈建议在进行任何更改之前使用 Windows 文件资源管理器制作此文件的副本。

打开此文件并查找包含已删除控件名称的所有行并将其删除。保存文件,您现在应该可以将新控件重命名为与旧控件相同的名称。

【讨论】:

  • 我用 Notepad++ 尝试过几次,没有发现任何痕迹。刚刚再次尝试,我发现 Notepad++ 正在以区分大小写的模式进行搜索,我正在搜索“Datalink”而不是“DataLink”。问题解决了。谢谢。
猜你喜欢
  • 2015-02-26
  • 1970-01-01
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多