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