如何动态访问所有者表单的成员

41686d6564

在Winforms应用程序中,请考虑以下Form类:

Public Class frmOwner
    Public MyProperty As String = "Test"
    Private Sub btnShowDialog_Click(sender As Object, e As EventArgs) _
                                    Handles btnShowDialog.Click
        Using frm As New frmDialog
            frm.ShowDialog(Me)
        End Using
    End Sub
End Class

现在,每当我想MyProperty从对话框表单中访问时,我都会使用如下代码:

    MessageBox.Show(DirectCast(Me.Owner, frmOwner).MyProperty)  'Test

到目前为止,一切都很好。问题是当我有另一种形式(例如frmOwner2)也有成员MyProperty,同时也显示了一个实例frmDialog

我的问题是:如何确定frmDialog所有者可以通过哪种形式访问其公共成员?

阿提拉·S·西拉吉(Attila S.Szilagyi)

如果要通过对话框访问所有者的某些公共属性,但是所有者可能是不同的类,则可以选择两种不同的方法:1.类继承2.实现接口。

在这两种情况下,都强制转换为适当的父级或接口,然后调用该对象的属性名称。

另一种方法是使用反射,但在您的情况下,这将是对付小鸟大炮

1,类继承

您可以以父级形式定义所需的公共属性然后,您使用Inherits ParentForm指令从此父项派生其他形式

Public Class frmOwnerBase

  Protected _MyProperty1 As String
  Public Property MyProperty1() As String
    Get
      Return _MyProperty1
    End Get
    Set(ByVal value As String)
      _MyProperty1 = value
    End Set
  End Property

  Protected _MyProperty2 As String
  Public Property MyProperty2() As String
    Get
      Return _MyProperty2
    End Get
    Set(ByVal value As String)
      _MyProperty2 = value
    End Set
  End Property

End Class

然后在frmOwner1.Designer.vb和frmOwner2.Designer.vb文件中,您重新编写祖先:

Partial Class frmOwner1
  Inherits frmOwnerBase

Partial Class frmOwner2
  Inherits frmOwnerBase

2,接口实现

您可以在接口中定义属性的类型和名称然后在frmOwnerfrmOwner2类中,Implements InterfaceName在它们的声明中应用。然后,您使用指令定义属性Public MyProperty As String Implements InterfaceName.MyProperty

Public Interface InterfaceOwner

  Property MyProperty1() As String

  Property MyProperty2() As String

End Interface
Public Class frmOwner
  Implements InterfaceOwner
  Private _MyProperty1 As String
  Public Property MyProperty1() As String Implements InterfaceOwner.MyProperty1
    Get
      Return _MyProperty1
    End Get
    Set(ByVal value As String)
      _MyProperty1 = value
    End Set
  End Property

  Private _MyProperty2 As String
  Public Property MyProperty2() As String Implements InterfaceOwner.MyProperty2
    Get
      Return _MyProperty2
    End Get
    Set(ByVal value As String)
      _MyProperty2 = value
    End Set
  End Property

End Class

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何更改Azure数据库的所有者

来自分类Dev

Grails如何为所有者创建所有者的一对多关系创建表单

来自分类Dev

ActiveRecord关联范围块内的访问所有者

来自分类Dev

为什么在所有者表单本身之后销毁了拥有的表单?

来自分类Dev

SOQL:访问联系人所有者字段

来自分类Dev

以编程方式访问TFS批注以确定所有者

来自分类Dev

在析构函数C ++中访问所有者

来自分类Dev

如何从团队中的团队中删除所有者而不将其从成员列表中删除?

来自分类Dev

如何在Oracle SQL中编写策略来限制对表的非所有者的访问?

来自分类Dev

如何找到没有ps的进程的所有者

来自分类Dev

如何更改目录的所有者

来自分类Dev

如何仅在所有者类之外使用设置访问器创建属性

来自分类Dev

设置子目录(rx)的全局可浏览权限,但使所有者和组成员以外的所有人都无法访问文件

来自分类Dev

ActiveRecord关联范围块内的访问所有者

来自分类Dev

关闭表单后打开所有者表单

来自分类Dev

将所有者设置为其他流程表单中的表单

来自分类Dev

如何将访问权限仅限制于所有者和开发人员?

来自分类Dev

如何使文件的所有者可写?

来自分类Dev

属于所有者组的目录的访问权限

来自分类Dev

如何使用oauth委托访问多个所有者的资源来发出单个请求?

来自分类Dev

以编程方式访问TFS批注以确定所有者

来自分类Dev

如何动态访问所有者表单的成员

来自分类Dev

清理缓存时,如何解决甚至所有者拒绝访问的问题?

来自分类Dev

WPF:如何使表单的所有者成为调用应用程序?

来自分类Dev

如何更改流程的所有者?

来自分类Dev

容器的元素如何访问其容器的“所有者”?

来自分类Dev

设计访问对象所有者的元素

来自分类Dev

如何使用awk输出动态更改目录的所有者?

来自分类Dev

Dynamics CRM限制所有者团队的访问

Related 相关文章

  1. 1

    如何更改Azure数据库的所有者

  2. 2

    Grails如何为所有者创建所有者的一对多关系创建表单

  3. 3

    ActiveRecord关联范围块内的访问所有者

  4. 4

    为什么在所有者表单本身之后销毁了拥有的表单?

  5. 5

    SOQL:访问联系人所有者字段

  6. 6

    以编程方式访问TFS批注以确定所有者

  7. 7

    在析构函数C ++中访问所有者

  8. 8

    如何从团队中的团队中删除所有者而不将其从成员列表中删除?

  9. 9

    如何在Oracle SQL中编写策略来限制对表的非所有者的访问?

  10. 10

    如何找到没有ps的进程的所有者

  11. 11

    如何更改目录的所有者

  12. 12

    如何仅在所有者类之外使用设置访问器创建属性

  13. 13

    设置子目录(rx)的全局可浏览权限,但使所有者和组成员以外的所有人都无法访问文件

  14. 14

    ActiveRecord关联范围块内的访问所有者

  15. 15

    关闭表单后打开所有者表单

  16. 16

    将所有者设置为其他流程表单中的表单

  17. 17

    如何将访问权限仅限制于所有者和开发人员?

  18. 18

    如何使文件的所有者可写?

  19. 19

    属于所有者组的目录的访问权限

  20. 20

    如何使用oauth委托访问多个所有者的资源来发出单个请求?

  21. 21

    以编程方式访问TFS批注以确定所有者

  22. 22

    如何动态访问所有者表单的成员

  23. 23

    清理缓存时,如何解决甚至所有者拒绝访问的问题?

  24. 24

    WPF:如何使表单的所有者成为调用应用程序?

  25. 25

    如何更改流程的所有者?

  26. 26

    容器的元素如何访问其容器的“所有者”?

  27. 27

    设计访问对象所有者的元素

  28. 28

    如何使用awk输出动态更改目录的所有者?

  29. 29

    Dynamics CRM限制所有者团队的访问

热门标签

归档