Vb.net 重写过程以接受多个参数

Vb.net 重写过程以接受多个参数,vb.net,Vb.net,我编写了下面的过程来处理应用程序中的一组特定自定义控件。然而,随着我的应用程序的发展,我发现自己在应用程序中对不同的自定义控件反复使用相同的过程 我有3个参数: btnCategoryTabs(自定义控件) frmManageStore(原始表单,但现在我必须在其他表单上使用) flpMainPanel(最初的面板,但现在我有更多使用相同过程的面板) 此过程是否可以转换为函数或参数子过程?我试着玩弄各种模糊的说法,但都没用 Public Sub removeButtons()

我编写了下面的过程来处理应用程序中的一组特定自定义控件。然而,随着我的应用程序的发展,我发现自己在应用程序中对不同的自定义控件反复使用相同的过程

我有3个参数:

  • btnCategoryTabs(自定义控件)
  • frmManageStore(原始表单,但现在我必须在其他表单上使用)
  • flpMainPanel(最初的面板,但现在我有更多使用相同过程的面板)
  • 此过程是否可以转换为函数或参数子过程?我试着玩弄各种模糊的说法,但都没用

        Public Sub removeButtons()
    
        'This procedure is used to remove buttons from the panel
        'after each category is clicked--
    
          Dim btnList As List(Of btnCategoryTabs) = frmManageStore.flpMainPanel.Controls.OfType(Of btnCategoryTabs).ToList()
    
        'Remove these Buttons
        For Each btn As btnCategoryTabs In btnList
    
            btn.Dispose()
    
        Next
    
    End Sub
    

    使代码可重用是一个好主意。要做到这一点,只需通过

    • 作为泛型参数的自定义控件的类型,以及
    • 将面板作为常规参数:

      Public Sub removeButtons(Of TButton As IDisposable)(p As Panel)
          Dim buttons = p.Controls.OfType(Of TButton).ToList()
      
          For Each btn In buttons
              btn.Dispose()
          Next
      End Sub
      
    用法:
    移除(btnCategoryTabs的)按钮(frmManageStore.flpMainPanel)


    请注意,在用户界面元素上调用
    Dispose
    看起来很可疑。你可能想调查一下你在这里所做的是否真的是适合这份工作的工具。(不过,这可能是另一个问题的主题。)

    该方法完全可以接受任何参数(
    removeButtons(无参数)
    ),您可以传入一个参数数组,甚至可以传入您想要的
    列表(MyCtl)
    。不清楚你的意思。你(通常)不应该直接打电话给Dispose。你的代码的目的是什么?@neolik我有一个程序,可以在单击按钮时为数据库中的每个项目加载按钮。但是,每次单击按钮时,面板都会充满相同的项目,而不是一次。我在填充之前使用dispose过程来防止数据库中出现双重条目,那么如果条目相同,您可能不应该刷新它?你能给你的问题添加一个截图吗?@neolik。谢谢,因为这个问题可能离题了,我在这里提出了一个新问题: