0

我正在尝试创建一个使用自定义网格(子类)的控件(父类)。网格有一系列构造函数和方法,用于根据 [父] 控件中的属性值填充自身。

我发现使这些属性值可用于网格的唯一方法是使它们成为可能,Shared但这会给我带来各种问题。

要求

  • 控件(父)中的属性必须可供网格(子)访问。
  • 控件中的属性必须在设计时属性资源管理器中可见。
  • 网格类只能由父类实例化。

作为旁注:请说明您的回答是否允许我在孩子和父母之间来回分享属性/方法。那会很好,但只是奖金。

谢谢 ;)

编辑 - 基于我的情况的一个非常简单的例子:

Partial Public Class catContent
    Inherits System.Web.UI.UserControl

    Protected Sub Page_Load(sender, e) Handles Me.Load
        Page.Controls.Add(New CategoryResultGrid(category))
    End Sub

    Private Shared _product As String = String.Empty

    Shared Property Product() As String
        Get
            Return _product
        End Get
        Set(ByVal value As String)
            _product = value.Trim()
        End Set
    End Property

    Private Class CategoryResultGrid
        Inherits GridView

        Sub New(ByVal category As String)
            'How do I access "Product" here without sharing it?
        End Sub
    End Class
End Class
4

1 回答 1

0

不要使用共享,一旦你在你的应用程序中放置了多个自定义控件,它就会破坏你的应用程序。

如果您只希望 Grid 存在于 Parent 控件的上下文中,请考虑将其公开,类似于 ListView 控件公开其 Items 集合的方式。

如果您希望您的 Grid 访问(父)控件中的字段,有几种方法可以做到这一点。您可以将 Parent 的实例传递给 Grid,您可以让 Grid 使用标准的 Control 方法来获取其父引用,或者您可以将 Grid 实现为 Parent 的内部类。

于 2012-06-28T12:43:14.177 回答