我在VB.Net中遇到两个UserControl问题。我正在使用VS2012。 UserControl是一个名为 DataDriver 的面板,它在运行时是在表单上动态创建的。在 DataDriver 中,有一个控件,它是项目中定义的另一个名为 DataLink 的UserControl的实例。 DataLink 允许用户选择数据源(实际上是命名连接字符串)。 UserControls都在同一个项目中定义。
在过去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 ?
答案 0 :(得分:1)
有时,当您删除某个控件时,它不会在.Designer
文件中删除。这不是一件特别安全的事情,所以要小心。
在解决方案资源管理器中,单击按钮以显示所有文件。
然后在解决方案资源管理器中,单击表单旁边的右箭头。
在展开的列表中,您会看到类似Form1.Designer.vb
的文件
我强烈建议您在进行任何更改之前使用Windows文件资源管理器制作此文件的副本。
打开此文件并查找包含已删除控件名称的所有行并将其删除。保存文件,您现在应该可以将新控件重命名为旧控件。