0

ページのラベルをユーザー コントロールに公開しようとしています。そこで、ユーザー コントロールにパブリック プロパティを作成し、そのプロパティをページに設定することにしました。

私のユーザー コントロールには、次のパブリック プロパティがあります。

Public Property lblTestLabel As Label

それから私はこれをします:

lblTestLabel.Attributes.CssStyle.Add("Display", "inline")

そして、ユーザー コントロールを含む私のページでは、次のようにします。

ucTestUserControl.lblTestLabel = lblRealLabel

しかし、私はこのエラーを受け取り続けます:

Object reference not set to an instance of an object.

CssStyle を設定しようとしている行で。オブジェクトがページに存在することは知っていますが、オブジェクトがユーザー コントロールに適切に公開されているとは思いません。

これを適切に行う方法について何か考えはありますか?

ありがとう

4

1 に答える 1

1

この方法でメソッドを呼び出すことはできません。プロパティは変数ではなく、単なるデータ要素です。

lblTestLabelLabel のインスタンスではありません。対応するプロパティの基になる変数を定義してから、プロパティ自体ではなく、変数に対して Add() メソッドを呼び出す必要があります。

Dim _lblTestLabel As Label
_lblTestLabel = New Label   ' This goes in your constructor, not here
Public Property lblTestLabel As Label
    Get          
        _lblTestLabel.Attributes.CssStyle.Add("Display", "inline")
        return _lblTestLabel
    End Get
    Set (value As Label)
        _lblTestLabel = value
    End Set
End Property

とは言っても、このステートメントucTestUserControl.lblTestLabel = lblRealLabelはプロパティの基になるラベルを上書きするので、 への呼び出し.Add()は重要ではありません。

ただし、これはほとんど無関係です。ここでの主な問題は、この種の動作を処理する方法が非常に悪いことです。ここでは、イベントとイベント ハンドラを使用する必要があります。UserControl でイベントを発生させ、ページでそのイベントを処理して、ラベル自体を更新します。

于 2013-02-21T21:27:52.447 に答える