VB.NET usercontrols删除主窗体控件

时间:2015-12-13 14:10:38

标签: vb.net forms winforms panel

我有一个主窗体,它有一个按钮和一个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)的每个实例上,并保持Panel项目的有序化。 / p>

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:0)

无法在您的删除按钮上使用

Yourcontrol.visible = false

这会隐藏该功能以便将其删除

答案 1 :(得分:0)

您可以为用户控件创建新的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

您可以了解有关处理和举办活动的更多信息:

答案 2 :(得分:0)

这在用户控制代码中对我有用:

Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
    DirectCast(Me.Parent, FlowLayoutPanel).Controls.Remove(Me)
End Sub