【问题标题】:Generic function in VB.Net_forms have as the same controlVB.Net_forms 中的泛型函数具有相同的控件
【发布时间】:2025-12-10 19:45:02
【问题描述】:

我有一些这样的代码:

                    If m_frmParent.Name = "formA" Then
                        Dim formTest = CType(m_frmParent, formA)
                        formTest.pnlHeader.pnlPending.RefreshMedicationMonitoring()
                    End If

------------ 或

                    If m_frmParent.Name = "formB" Then
                        Dim formTest = CType(m_frmParent, formB)
                        formTest.pnlHeader.pnlPending.RefreshMedicationMonitoring()
                    End If

这些表单具有相同的用户控件 pnlHeader,其中包含 pnlPending 用户控件

pnlHeader.pnlPending.RefreshMedicationMonitoring()

请帮助我将其更改为可用于每种形式的通用函数。 谢谢!

【问题讨论】:

  • 创建FormAFormB 继承的抽象基类。要么将RefreshMedicationMonitoring 的逻辑放到基类中,要么将其定义为 MustInherit 并在子窗体中实现。然后直接从frmParent.pnlHeader.pnlPending.RefreshMedicationMonitoring() 调用您的代码,然后 polymorphis m 将为您完成剩下的工作。
  • pnlPending 也是 pnlHeader 用户控件中的用户控件。感谢您的解决方案,但实现起来似乎并不简单
  • 将用户控件添加到您的基类中。

标签: vb.net winforms


【解决方案1】:

嘿试试以下:

Dim formTest As formB = DirectCast(m_frmParent, formB)
formTest.pnlHeader.pnlPending.RefreshMedicationMonitoring()

【讨论】:

  • 感谢您的回答,但这不是我想要的通用功能
  • @Steve 应该鼓励所有人
  • 您的选择,但确实违背了网站的精神。如果你鼓励错误的答案,就会有更多的错误答案出现,网站质量也会下降。