将图片框添加到 Windows 窗体
Posted
技术标签:
【中文标题】将图片框添加到 Windows 窗体【英文标题】:Adding PictureBoxes to Windows Form 【发布时间】:2020-10-19 10:10:50 【问题描述】:我一直在尝试创建一个代码来模拟学校的某事(还没有到那个)队列,并试图创建多个图片框并将它们存储在一个列表中。出于某种原因,它们没有出现...有人有什么建议吗?
公开课表1 Dim peoples As New List(Of PictureBox)() Private Sub Form1_Load(sender As Object, e As EventArgs) 处理 MyBase.Load Timer1.Enabled = 真 Timer1.Interval = 随机数(100, 500) 结束子 子循环() Timer1.Interval = 随机数(100, 500) 结束子 函数随机数(下为整数,上为整数) 随机化() 返回 Int((upper * Rnd()) + lower) 结束功能 Private Sub Timer1_Tick(sender As Object, e As EventArgs) 处理 Timer1.Tick 循环() 新队列成员() 结束子 私有子 newqueuemember() 将图片框调暗为新图片框 图片框宽度 = 50 图片框.Visible = True 图片框.高度 = 50 Dim selectperson As Integer = randomnumber(1, 3) 如果选择人 = 1 那么 图片框.Image = My.Resources.person1 ElseIf 选择人 = 2 则 pictureBox.Image = My.Resources.person2 别的 图片框.Image = My.Resources.person3 万一 pictureBox.Location = 新点(10, 20) peoples.Add(图片框) 结束子 结束类
【问题讨论】:
您正在创建PictureBoxes
好吧,但是您实际上是在哪里将它们添加到表单中?提示:无处。
简单地将它们添加到表单中没有任何逻辑或想法将没有任何帮助,这些图片框将在表单上的位置(它们都将直接位于每个图片框的顶部,您只会看到其中之一)。您需要想出一种方法来安排它们并相应地设置它们的.Location
属性。或者,您可以将它们添加到 TabeLayoutPanel,或者可能会为您安排它们的 FlowLayoutPanel:FlowLayoutPanel1.Controls.Add(pictureBox)
。
去掉randomnumber函数,使用.net Random类。单个实例可用于所有方法。在表单级别 Private Rnd As New Random
然后像这样使用 Timer1.Interval = Rnd.Next(100, 500)
它将返回一个从 100 到 499 的随机数。
【参考方案1】:
下:
peoples.Add(pictureBox)
添加:
Me.Controls.Add(pictureBox)
这是一个 C# 参考(很容易翻译成 VB):
https://support.microsoft.com/en-us/help/319266/how-to-programmatically-add-controls-to-windows-forms-at-run-time-by-u
【讨论】:
【参考方案2】:使用流式布局面板,定义对象的大小(宽、高),然后简单地将它们添加到流式布局面板,如果图片框列表的长度比面板的高度。
FlowLayoutPanel1.controls.add(picturebox_object)
【讨论】:
以上是关于将图片框添加到 Windows 窗体的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 窗体中将 list<T> 添加到列表框的类型错误
在 Windows 窗体 C# 中创建 POI 映射。如何将图标(图像)放在地图上(图片框中的现有图像)?