我有一个主表单,其中有一个按钮和一个 FlowLayoutPanel
.我还创建了一个 UserControl
其中有一些按钮和其他控件。
当我点击主窗体中的按钮时,它将我的usercontrol添加到面板上(点击的次数一样多)。
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
Dim ctrl As New DownloadControls
FlowLayutPanel1.Controls.Add(ctrl)
End Sub
这很好用。例如,我在主窗体中添加了5个UserControl实例到面板上,现在我想使用添加的每个Usercontrols(DownloadControls)实例上的remove按钮删除其中任何一个,并保持面板项目的有序性。
我如何才能实现这一点?
你可以创建一个新的 RemoveClicked
事件,并在用户点击删除按钮时触发该事件。然后你就可以在你的表单中处理该事件来删除该控件。
你的用户控件的代码。
Public Event RemoveClicked As EventHandler
Public Sub OnRemoveClicked(e As EventArgs)
RaiseEvent RemoveClicked(Me, e)
End Sub
Private Sub btnRemove_Click(sender As Object, e As EventArgs) Handles btnRemove.Click
OnRemoveClicked(EventArgs.Empty)
End Sub
为你的表单编写代码。
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
Dim ctrl As New DownloadControls
AddHandler ctrl.RemoveClicked, AddressOf ctrl_RemoveClicked
Me.FlowLayutPanel1.Controls.Add(ctrl)
End Sub
Private Sub ctrl_RemoveClicked(sender As Object, e As EventArgs)
Me.FlowLayutPanel1.Controls.Remove(DirectCast(sender, Control))
End Sub
你可以学习更多关于处理和引发事件的知识。
在你的删除按钮上,你不能只使用
Yourcontrol.visible = false
这将隐藏该功能,从而使其被移除
在用户控制代码中,这对我是有效的。
Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
DirectCast(Me.Parent, FlowLayoutPanel).Controls.Remove(Me)
End Sub