VB.NET中如何通过OOP编程创建PictureBox控件?
问题分析与解决
你的代码存在两个核心问题,导致PictureBox无法显示:
重复创建控件,逻辑混淆
你的Obj类已经继承了PictureBox,本身就是一个合法的PictureBox控件,但你在构造函数里又新建了一个PictureBox实例并赋值给ObjName,这完全是多余的操作,相当于你创建了两个PictureBox,而你实际想使用的是继承的那个,却错误地操作了新实例。未将自定义控件添加到窗体的控件集合
你在类内部调用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
相关产品推荐
相关产品推荐

