【问题标题】:Visual Basic Removing a control that was added in codeVisual Basic 删除代码中添加的控件
【发布时间】:2015-04-30 19:49:50
【问题描述】:

在我的一个功能中,图片框被创建并添加到表单中,一切正常。只是,我希望以后能够在不同的功能中删除特定的。我尝试使用 Me.Controls.Remove(Control_Name) 但这只会产生一堆错误,因为控件尚不存在并且不会构建运行。

有没有办法解决这个问题并能够移除控件?

【问题讨论】:

    标签: visual-studio vba controls basic


    【解决方案1】:

    如果我理解正确,您指的是这样的动态控件:

    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'. 这仍然会阻止成功构建
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多