【问题标题】:VB.NET usercontrols to remove main form controlsVB.NET 用户控件删除主窗体控件
【发布时间】:2016-03-19 01:07:13
【问题描述】:

我有一个主窗体,它有一个按钮和一个FlowLayoutPanel。 我还创建了一个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 个该用户控件的实例,现在我想使用添加的用户控件 (DownloadControls) 的每个实例上的删除按钮删除其中的任何一个,并保持面板项目井井有条。

我怎样才能做到这一点?

【问题讨论】:

    标签: vb.net forms winforms panel


    【解决方案1】:

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

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

      Yourcontrol.visible = false

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-11-22
          • 1970-01-01
          • 1970-01-01
          • 2015-03-03
          • 1970-01-01
          • 2019-06-12
          • 1970-01-01
          相关资源
          最近更新 更多