【问题标题】:Rewrite procedure to accept multiple parameters重写过程以接受多个参数
【发布时间】:2015-01-01 16:17:16
【问题描述】:

我编写了以下过程来处理我的应用程序中的一组特定自定义控件。但是,随着我的应用程序的增长,我发现自己在我的应用程序中一遍又一遍地使用相同的过程来处理不同的自定义控件。

我有 3 个参数:

  1. btnCategoryTabs(自定义控件)
  2. frmManageStore(原来的表格,但现在我必须在其他表格上使用)
  3. flpMainPanel(原始面板,但现在我有更多面板可以使用相同的过程)

这个过程可以变成函数或者参数Sub吗?我尝试使用各种 Dim 语句,但没有任何效果。

    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

【问题讨论】:

  • 该方法确实接受任何参数 (removeButtons(no params)) 你可以传入一个参数数组,甚至是你想要的 List(of MyCtl)。不清楚你的意思。
  • 您(通常)不应该直接调用 Dispose。你的代码的目的是什么?
  • @Neolisk 我有一个程序可以在单击按钮时为我的数据库中的每个项目加载按钮。但是,每次单击按钮时,面板都会填充相同的项目,而不仅仅是一次。我在填充过程之前使用 dispose 来防止数据库中的重复条目
  • 那么如果项目相同,也许你不应该刷新它?您可以为您的问题添加屏幕截图吗?
  • @Neolisk。谢谢,因为这个问题可能跑题了,我在这里创建了一个新问题:stackoverflow.com/questions/27733545/…

标签: vb.net


【解决方案1】:

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

  • 自定义控件的类型作为通用参数和
  • 面板作为常规参数:

    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
    

用法:removeButtons(Of btnCategoryTabs)(frmManageStore.flpMainPanel)

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

【讨论】:

    猜你喜欢
    • 2021-10-16
    • 2021-12-26
    • 1970-01-01
    • 2013-07-01
    • 2013-04-10
    • 2018-01-28
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    相关资源
    最近更新 更多