【问题标题】:On button click fill next picture box在按钮上单击填充下一个图片框
【发布时间】:2013-10-18 22:51:44
【问题描述】:

我正在用 VB 编写一个小程序,但我想在一个按钮单击图片框时添加特定图像。对我来说棘手的部分是,每次单击按钮时,我都希望图像(来自同一位置,例如“C:\Test.jpg”)出现在下一个图片框中。

我尝试在图片框名称中使用一个变量,并在每次点击时增加它,但它一直报错(显然一定是用错了)。

所以为了更清楚:

我点击Button1

来自“C:\Test.jpg”位置的图像出现在 PictureBox1 中

我再次点击Button1

来自“C:\Test.jpg”位置的图像出现在 PictureBox2 中 等等

如您所想,我不是 VB.NET 方面的专家,所以如果各位好心人有任何建议,请提前感谢您:D

瓦胡尔

【问题讨论】:

  • 请详细描述您遇到的错误,并向我们展示您附加到按钮的代码。

标签: vb.net variables picturebox


【解决方案1】:

这是使用 Controls.Find() 的另一种方法:

Public Class Form1

    Private counter As Integer = 0

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        counter = counter + 1
        Dim matches() As Control = Me.Controls.Find("PictureBox" & counter, True)
        If matches.Length > 0 AndAlso TypeOf matches(0) Is PictureBox Then
            Dim pb As PictureBox = DirectCast(matches(0), PictureBox)
            Using fs As New System.IO.FileStream("C:\Test.jpg", IO.FileMode.Open)
                pb.Image = New Bitmap(Image.FromStream(fs))
            End Using
        End If
    End Sub

End Class

【讨论】:

  • 谢谢!这完全按照我希望的方式适用于我的应用程序。不错:D
【解决方案2】:

表单级别:

Private mPList As New List(of PictureBox)
Private pIndex as Integer = 0

表格显示:

With mPlist
   .Add(PictureBox1)
   .Add(PictureBox2)
   ... continue as needed
Ens With

按钮点击

 ' remove image from last picbox (????)
 mPlist(pIndex).Image = Nothing
 pIndex += 1
 if pIndex > mPlist.Count-1 then pIndex = 0
 mPlist(pIndex).Image.FromFile(filename)

【讨论】:

    【解决方案3】:

    我敢肯定,问题在于您正试图弄清楚如何增加一个数字并获取图片框的句柄来设置图片。我将在这里做一些假设,因为你正在制作一款纸牌游戏,并且你将拥有一定数量的玩家。你有几个选择:

    对于数字,您可以在表单中设置 PRIVATE 变量来保存下一个数字,并在每次单击按钮时将其递增 1。

    Private Player1NextImage as byte = 1
    Private Player2NextImage as byte = 1
    Private Player3NextImage as byte = 1
    Private Player4NextImage as byte = 1
    

    在按钮点击中,对于特定的玩​​家,你会想要得到他们的下一个图片框:

    您可以将图片框列表保留在列表中,如@Plutonix 所示,或者您可以只使用 SELECT CASE 语句并对图片框进行硬编码。

    Select Case Player1NextImage
      Case 1
        Player1Card1PictureBox.Image = ...
      Case 2
        Player1Card2PictureBox.Image = ...
    Etc...
    'Then increment the number
    Player1NextImage += 1
    

    【讨论】:

      【解决方案4】:

      有多种方法可以做到这一点。假设您的变量名为 Counter,并且(假设)您的图片框的父级是主窗体/控件,请将其添加到您的按钮单击事件中:

          Counter += 1
      
          Dim Pic As PictureBox = CType(Me.Controls("PictureBox" & Counter.ToString), PictureBox)
      
          If Pic Is Nothing Then
              MsgBox("Could not find PictureBox")
          Else
              Pic.Image = Image.FromFile("C:\Test.jpg")
          End If
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-14
        • 2012-12-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多