在VB.NET程序中任意删除控件
【IT168 技术文档】
当一个控件是另一个控件的子控件,例如pictruebox里面又有3个子pictruebox,子控件的名字存储在已知的变量当中,而当我们想删除其中任意控件的时候,可以使用如下方法来实现:
先看一段代码:
'控制控件状态
Private Sub mHDR_Control_Status(ByVal p_Enabled As Boolean)
Dim iControls As Integer
Dim i As Integer
iControls = Me.gbxVoyage_HDR.Controls.Count
For i = 0 To iControls - 1
If TypeOf (Me.gbxVoyage_HDR.Controls(i)) Is TextBox Or _
TypeOf (Me.gbxVoyage_HDR.Controls(i)) Is Infragistics.Win.Misc.UltraButton Then
Me.gbxVoyage_HDR.Controls(i).Enabled = p_Enabled
End If
Next
dtpLoad_ETD.Enabled = p_Enabled
If gLoad_Type = "0" Then
btnSave.Enabled = p_Enabled
btnEdit.Enabled = Not p_Enabled
Else
btnSave.Enabled = False
btnEdit.Enabled = False
End If
txtVoyageNO.Enabled = False
End Sub
简单来说,就是用Me.gbxVoyage_HDR.Controls(i)),如果控件里面还有控件,就再加Controls(i)来控制Me.gbxVoyage_HDR.Controls(i).Controls(i)。
回到先前的假设,pictruebox里面又有3个子pictruebox,对其中任意一个做删除的主要代码如下:
Public pics(1000) As System.Windows.Forms.PictureBox
dim pic1 as new New PictureBox
dim pic2 as new New PictureBox
dim pic3 as new New PictureBox
dim j as integer=0
dim Mainpic as new New PictureBox
Mainpic .Controls.Add(pic1)
pics(j)=pic1
j+=1
Mainpic .Controls.Add(pic2)
pics(j)=pic2
j+=1
Mainpic .Controls.Add(pic3)
pics(j)=pic3
j+=1
使用了控件数组,全部删除的时候:Mainpic .Controls.Clear()
删除第j个控件的时候:Mainpic .Controls.Remove(pics(j))