You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中如何通过OOP编程创建PictureBox控件?

问题分析与解决

你的代码存在两个核心问题,导致PictureBox无法显示:

  1. 重复创建控件,逻辑混淆
    你的Obj类已经继承了PictureBox,本身就是一个合法的PictureBox控件,但你在构造函数里又新建了一个PictureBox实例并赋值给ObjName,这完全是多余的操作,相当于你创建了两个PictureBox,而你实际想使用的是继承的那个,却错误地操作了新实例。

  2. 未将自定义控件添加到窗体的控件集合
    你在类内部调用Controls.Add(ObjName),这里的Controls是当前Obj控件的子控件集合,而非窗体的。更关键的是,你创建的newObj实例从未被添加到窗体的控件列表中,所以窗体根本不知道这个控件的存在。


修正后的代码

自定义PictureBox类

Public Class Obj : Inherits PictureBox
    Public Sub New(myHeight As Integer, myWidth As Integer, newX As Integer, newY As Integer, newName As String)
        ' 直接设置当前控件(继承自PictureBox)的属性
        Me.Height = myHeight
        Me.Width = myWidth
        Me.Left = newX
        Me.Top = newY
        Me.Name = newName
        Me.BackColor = Color.Red
    End Sub
End Class

在窗体中创建并显示控件

' 假设这段代码在窗体的某个事件(比如Form_Load)中执行
Dim newObj = New Obj(200, 100, 150, 150, "newObj")
' 必须将控件添加到窗体的Controls集合中
Me.Controls.Add(newObj)

内容的提问来源于stack exchange,提问作者vbAmeature

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 14:42:05