vb.NET 控件创建后如何设置 class

How to set the class of a vb.NET control after it's been created already

我有一个 Windows 表单,上面有 7 个图片框,从 PropButton1 到 PropButton7。我知道它们不是按钮,但我还是将它们用作按钮(普通按钮不适合此目的)。

我想向图片框添加自定义 "File Path" 属性。为此,我创建了一个单独的 class 来继承 PictureBox class:

Public Class PropButton
    Inherits PictureBox
    Private SoundFilePath As String

    Public Property SoundFile() As String
        Get
            Return SoundFilePath
        End Get
        Set(value As String)
            SoundFilePath = value
        End Set
    End Property

End Class

我想将原始图片框从 PictureBox 转换为 PropButton,这样我就可以读取和写入 PropButton1.SoundFilePath 之类的东西,我最好不想删除所有图片框并重新开始.有办法吗?

在 Visual Studio 中,在解决方案资源管理器中向右看。它有一个工具栏按钮来显示所有文件。单击它,您将看到可以展开表单的树节点,它们包含三个文件。一个包含您的源代码,另一个称为设计器。 Designer 文件由 Visual Studio 自动生成,在大多数情况下不应更改。

当您打开设计器文件时,您会看到窗体上控件的所有初始化及其声明。在这里您可以轻松更改图片框的声明,以便将它们创建为 PropButtons。

请注意您在此处所做的更改,因为它可能会扰乱 Visual Studio 设计器。但很高兴知道幕后发生的事情。

先看这里:

改变这个...

...至此。

是的,这可以通过文本编辑器实现。 Visual Basic IDE 隐藏了太多信息,您要做的第一件事是单击解决方案资源管理器 window 中的 "Show All Files" 图标。这会在同一个 window 中的表单旁边添加一个节点,打开它并双击 Designer.vb 文件。请注意文件底部的 InitializeComponent() 方法和声明,您会看到正在声明和初始化的 PictureBoxes。

您现在可以简单地编辑+将 "System.Windows.Forms.PictureBox" 替换为 "PropButton"。

确保在执行此操作之前有一个良好的备份。