从功能中获取控制的参考

时间:2019-04-02 13:36:37

标签: vb.net

我的应用程序有一个包含4个选项卡的表单,每个选项卡中都有一个DataGridView(DGV)。标签之外还有一个控件面板,用于所有DGV控件。

我需要确保代码根据用户的观察来更新正确的DGV。目前,对于需要在DGV上进行某些工作的任何事件或功能,我都会这样做:

Dim dgv As DataGridView = GetCurrentDGV(TabControl.SelectedTab)

For Each row As DataGridViewRow In dgv.SelectedRows
    'Do work on row
Next

这是函数GetCurrentDGV()

Private Function GetCurrentDGV(ByRef tab As TabPage) As DataGridView

For Each control As Control In tab.Controls
    If control.GetType Is GetType(DataGridView) Then
        Return CType(control, DataGridView)
    End If
Next

End Function

我对此有很多不满意的地方。

首先,它很慢。我不确定为什么每个选项卡仅包含一个DGV,而没有其他内容(因此,通过控件的循环只是一个项目,应该在第一个循环中返回)。

第二,我的函数有可能不返回任何将提供空引用的内容。

我正在尝试避免对制表符和DGV之间的关系进行硬编码,但是在我走这条路线之前,有没有更好的方法可以做到这一点?

0 个答案:

没有答案