我在VB.Net中遇到了两个UserControl问题。我用的是VS2012。UserControl是一个名为DataDriver的面板,运行时在表单上动态创建。在DataDriver中有一个控件,它是在名为DataLink的项目中定义的另一个UserControl的示例。DataLink允许用户选择数据源(实际上是命名的连接字符串)。这两个UserControl都在同一个项目中定义。
在过去24小时内的某个时刻,我在设计模式下打开DataDriver,它向我展示了我经常看到的屏幕,其中指出:“若要在加载设计器之前防止可能的数据丢失,必须解决下列错误:上面有一个“忽略并继续”的链接,我点击了它。我不完全确定为什么会出现这种情况,但它确实如此。
打开DataDriver后,我发现UserControlDataLink消失了。我创建了它的一个新示例,并试图将其重命名为它的原始名称(ucDataLink),但出现了以下错误:
属性值无效。已存在名为“ucDataLink”的组件。组件必须具有唯一的名称,并且名称必须不区分大小写。名称也不能与继承类中任何组件的名称冲突。
我已经关闭了项目,检查了UserControlDataDriver的三个组件(设计器、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?
2条答案
按热度按时间prdp8dxp1#
有时候,当你删除一个控件时,它不会在
.Designer
文件中被删除。这不是一件特别安全的事情,所以要小心。在解决方案浏览器中,单击按钮以显示所有文件。
然后也在解决方案资源管理器中,单击窗体旁边的右箭头。
在展开的列表中,您将看到一个类似于
Form1.Designer.vb
的文件我强烈建议在进行任何更改之前使用Windows文件资源管理器复制此文件。
打开此文件,查找包含已删除控件名称的所有行,并将其删除。保存该文件,现在应该能够将新控件重命名为与旧控件相同的名称。
u5rb5r592#
在我的情况下,公认的解决方案没有工作,但别的东西做了...
在代码中,有一个方法与新添加的菜单同名(因为我打算将其用于这个新菜单项):
我通过首先删除该方法然后重新创建它来消 debugging 误,例如,通过单击设计器视图中的菜单。
希望这对其他人也有帮助。
顺便说一句,我使用Visual Studio Professional 2022。