VB.NET用户控件删除主窗体控件。

问题描述 投票:1回答:3

我有一个主表单,其中有一个按钮和一个 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按钮删除其中任何一个,并保持面板项目的有序性。

我如何才能实现这一点?

vb.net forms winforms panel
3个回答
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

你可以学习更多关于处理和引发事件的知识。


0
投票

在你的删除按钮上,你不能只使用

Yourcontrol.visible = false

这将隐藏该功能,从而使其被移除


0
投票

在用户控制代码中,这对我是有效的。

Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
    DirectCast(Me.Parent, FlowLayoutPanel).Controls.Remove(Me)
End Sub
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.