2

我正在尝试编写一个程序,该程序具有可扩展的图像提要,可以随时添加图片。在我咬掉那个块之前,我只是想用一个自定义图像类进行测试,它将在picturebox对象顶部保存一些额外的信息。我遇到的问题是我的对象(oSlideItemas clsSlideItem)继承了picturebox似乎没有在运行时加载图片。我尝试了两种不同的方法,这些方法在帮助和这个论坛上都提到了,但我似乎无法在运行时获得图片。我还没有找到任何提及我继承picturebox.

我尝试在加载图片之前设置图像位置和大小属性,没有改变任何东西。

由于我使用的是继承状态而不是本机图片框对象的功能,因此是否需要执行一些额外的步骤才能启动图片框图像?

如您所见,我还将这些图像保存对象放入一个集合中。我测试了加载图片而不将其放入集合中并且没有任何改变,所以我认为这不是问题。我假设一旦将对象添加到集合中,集合内的对象和集合外的对象就会解耦。我还没有为此做一个很好的测试。

Public Class clsSliders
Private clFeedItems As New Collection 'collection of all feed items
Private oFeed As New clsFeed 'feed organizer layer

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    'build Feed
    Dim oSlideItem As clsSlideItem 'feed item layer

    'make collection of slider objects
    oSlideItem = New clsSlideItem
    oSlideItem.setRank(1, oFeed)
    oSlideItem.ImageLocation = "C:\Users\nathan\Pictures\Chicago_River_from_Lake_Street_bridge.jpg"
    oSlideItem.Load()

    clFeedItems.Add(oSlideItem, 1)

    oSlideItem = New clsSlideItem
    oSlideItem.Image = Image.FromFile("C:\Users\nathan\Pictures\ReindeerPowerLines.png")
    oSlideItem.setRank(2, oFeed)

    'add to collection
    clFeedItems.Add(oSlideItem, 2)

    oSlideItem = New clsSlideItem
    oSlideItem.Image = Image.FromFile("C:\Users\nathan\Pictures\TianmenMountain.jpg")
    oSlideItem.setRank(3, oFeed)

    'add to collection
    clFeedItems.Add(oSlideItem, 3)

End Sub

'other subs and properties
End Class

我的第二堂课:

Public Class clsSlideItem
Inherits PictureBox

Private iFeedRank As Integer 'current rank position

Public Sub setRank(rank As Integer, oFeed As clsFeed)
    If Not IsNothing(oFeed) Then
        Me.Left = oFeed.Left(rank)
        Me.Top = oFeed.Top(rank)
        Me.Width = oFeed.Width(rank)
        Me.Height = oFeed.Height(rank)
        iFeedRank = rank
    End If
End Sub

'other subs and properties
End Class

oFeedasclsFeed基本上是我作为一个类编写的一个结构,这样我就可以拥有额外的功能。它实际上不在此问题的范围内,因为该部分代码正在运行。我没有包括它,因为我不想把这篇文章弄乱。

4

1 回答 1

1

看起来图片框从未添加到表单控件集合中。添加这个

Me.Controls.Add(oSlideItem)

oSlideItem = New clsSlideItem

在将控件添加到 Controls 集合之前,控件在窗体上不可见(或包含在窗体中)。我认为图像读取得很好,只是它们没有显示在表单上。您可以通过在加载后设置断点并查看 oSlideItem (Shift-F9) 的属性来查看。

于 2013-01-31T05:22:41.323 回答