【发布时间】: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