我有2个文本框:如何在flowlayoutpanel上正确地重新使用控件?
- 产品的销售数量,可以是1-35
- 产品加油数量,可以1-35
35个隐藏pictureboxes与加载从.imagelocation产品的图像命名为picturebox1,picturebox2,picturebox3等 2个按钮:销售&加油
销售按钮:使循环显示图像的数量p可供出售RODUCTS(从销售数量,文本框计算的话),接着我将其添加成一个FlowLayoutPanel的:
For i As Integer = 1 To numberofproductstosale.Text
If Me.Controls.ContainsKey("PictureBox" & i) Then
Me.Controls("PictureBox" & i).Visible = True
Me.Controls("PictureBox" & i).Margin = New Padding(0)
Dim p1 As PictureBox = CType(Me.Controls("PictureBox" & i), PictureBox)
FlowLayoutPanel1.Controls.Add(p1)
End If
Next
IT WORKS!并正确显示每个项目... 但是,然后我想重复使用相同的flowlayoutpanel来显示加油项目,但我没有达到做到这一点!
一次,我已经使用在加油按钮尝试:
FlowLayoutPanel1.Controls.clear()
,再加入类似的代码添加+ unhidde第一次...但它不工作,还我已经尝试了新的循环单独取出35元(picbxs)..并具有类似第一码再次增加,但没有作品,分别个别删除+ hidding看起来像这样:
For i2 As Integer = 1 To 35
If Me.Controls.ContainsKey("PictureBox" & i2) Then
Me.Controls("PictureBox" & i2).Visible = False
Dim p2 As PictureBox = CType(Me.Controls("PictureBox" & i2), PictureBox)
FlowLayoutPanel1.Controls.Remove(p2)
End If
Next
我认为,消除和hiddes正确becau SE从屏幕上的每个项目dissapear .. 然后我尝试添加和再次unhidde的pictureboxes,但现在由加油列表(文本框)的数量决定使用此代码:
For i3 As Integer = 1 To productstorefuel.Text
If Me.Controls.ContainsKey("PictureBox" & i3) Then
Me.Controls("PictureBox" & i3).Visible = True
Me.Controls("PictureBox" & i3).Margin = New Padding(0)
Dim p3 As PictureBox = CType(Me.Controls("PictureBox" & i3), PictureBox)
FlowLayoutPanel1.Controls.Add(p3)
End If
next
我代码看起来很好,整洁和逻辑!为什么不工作?我在不同的循环中使用i,i2,i3来避免混淆......更好的是:我也尝试隐藏 - 添加到第二个流布局面板中,隐藏第一个面板并将第二个面板带到前面,但不起作用! ..我只能拿回在屏幕上与排序的项..的那部分代码如下所示
FlowLayoutPanel1.visible = false
FlowLayoutPanel2.visible = true
For i3 As Integer = 1 To productstorefuel.Text
If Me.Controls.ContainsKey("PictureBox" & i3) Then
Me.Controls("PictureBox" & i3).Visible = True
Me.Controls("PictureBox" & i3).Margin = New Padding(0)
Dim p3 As PictureBox = CType(Me.Controls("PictureBox" & i3), PictureBox)
FlowLayoutPanel2.Controls.Add(p3)
End If
next
FlowLayoutPanel2.BringToFront()
注意第一面板:代码的,我知道的第一部分(销售部门)是好的因为我的按钮是真正的复选框与按钮方面,然后,我可以看到处理速度因为当我取消选中销售按钮的图片框只是隐藏/显示速度非常快,但当我点击butons(销售 - 加油)我几乎可以检测图片盒图像的缓慢重新加载。但点击加油(检查或取消选中)没有任何反应!屏幕仍然是空的...我认为问题是我如何删除它。有什么建议么?? 在此先感谢!
要做到这一点,更好的方法是获得一个35个图片盒的阵列,然后每次添加许多您需要的面板。事实上,你的代码泄露了。 – Plutonix
我已经解决了这个问题:控件必须返回到form1容器中,而不是清除或删除它们....以与添加到流程面板相同的方式添加回form1 ...然后可以重复使用它们.. – arc95