我是 vb.net 的新程序员,因此对可能的无知表示歉意。
我正在为数据库界面构建一个简单的 GUI,其中包含许多父项和子项。在表单上,我根据项目数量(父母/孩子)创建按钮。我已经创建了按钮:
For RowNumber As Integer = 0 To NoOfRows
Dim Buttoni As New Button
Buttoni.Location = New Point(LocationX, LocationY)
Buttoni.Width = 100
Buttoni.Height = 40
Buttoni.Visible = True
Buttoni.Text = DatasetA.Tables(0).Rows(RowNumber).Item("Name")
ButtonName = "Button" + RowNumber.ToString
If LocationX < FormWidth - (SpacePerButtonX * 2) Then
LocationX = LocationX + SpacePerButtonX
Else
LocationX = 50
LocationY = LocationY + SpacePerButtonY
End If
AddHandler Buttoni.Click, AddressOf DynamicButtonClick
Me.Controls.Add(Buttoni)
Buttoni.BringToFront() 'brings newest buttons to front!
Next
但我正在努力寻找一种方法来删除按钮,以便为一组新按钮腾出空间来替换它们...我可以在单击时删除单个按钮,但我想删除所有已创建的按钮在重新创建它们之前以这种方式。
我希望这是有道理的,并且有一个相当简单的方法可以实现这一点..?
我将在您的创建循环中向 Tag 属性添加一些值。
这将有助于区分动态创建的按钮和表单中静态创建的按钮。
Buttoni.Tag = 1
然后,要删除按钮,请在 Me.Controls 集合上以相反的顺序循环,
检查是否有按钮以及 Tag 属性是否为 Nothing
For x as Integer = Me.Controls.Count - 1 to 0 step -1)
Dim b as Button = TryCast(Me.Controls(x), Button)
If b IsNot Nothing AndAlso b.Tag IsNot Nothing then
b.Dispose() '' NOTE: disposing the button also removes it
End If
Next
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)