【发布时间】:2015-04-30 19:49:50
【问题描述】:
在我的一个功能中,图片框被创建并添加到表单中,一切正常。只是,我希望以后能够在不同的功能中删除特定的。我尝试使用 Me.Controls.Remove(Control_Name) 但这只会产生一堆错误,因为控件尚不存在并且不会构建运行。
有没有办法解决这个问题并能够移除控件?
【问题讨论】:
标签: visual-studio vba controls basic
在我的一个功能中,图片框被创建并添加到表单中,一切正常。只是,我希望以后能够在不同的功能中删除特定的。我尝试使用 Me.Controls.Remove(Control_Name) 但这只会产生一堆错误,因为控件尚不存在并且不会构建运行。
有没有办法解决这个问题并能够移除控件?
【问题讨论】:
标签: visual-studio vba controls basic
如果我理解正确,您指的是这样的动态控件:
Me.Controls.Remove(Control_Name)
其中Control_Name 是尚不存在的控件的名称。实际上,在指定 Option Explicit 的情况下,应该给你一个关于 Control_Name 不是声明标识符的编译错误。
将控件视为公共字段(......它们是) - 如果控件在设计时不存在,则在编译时没有字段,因此参考例如Control_Name.Text 是非法的。
尝试使用字符串文字代替:
Me.Controls.Remove("Control_Name")
如果可能,请使用常量而不是在整个代码中散布字符串文字:
Const DYNAMIC_PICTUREBOX_NAME As String = "DynamicPictureBox"
这样您可以在一个地方重命名所有动态控件,然后您可以轻松添加数字后缀来迭代所有动态创建的图片框:
For i = 1 to 10
Me.Controls.Remove(DYNAMIC_PICTUREBOX_NAME & i)
Next
【讨论】:
Value of type 'String' cannot be converted to 'System.Windows.Forms.Control'. 这仍然会阻止成功构建