0

この質問は VB2008 Express に関するものです。

構造化プロパティを使用するユーザー コントロールを作成しています。コントロールとプロジェクト全体の構造は同じです。問題は、メイン プロジェクト内でこのプロパティに場所を割り当てようとすると、「非共有メンバーへの参照にはオブジェクト参照が必要です」という結果になることです。

それが何を意味するのか、どのように対処するのか、私にはわかりません。Microsoft のヘルプでは、「非共有メンバーを参照しているため、オブジェクト参照が必要です。」

Microsoft さん、エラーの説明を読んだので、シズニットはありません...しかし、それはどういう意味ですか? (私は VB6 から来ました。私はそこからの例で独学しているので、気楽に行ってください。)

もちろん、「Street」「City」など、構造の個々の部分を独自のプロパティとして割り当てることもできますが、ユーザーコントロールによって一度に検証されるため、1 つのステップで行うことを好む理由があります。割り当て時に。

ユーザーコントロールとメインプロジェクトが互いに「場所」を渡すのに役立つものはありますか?

   Public Structure Place
        Public PlaceName As String
        Public Street As String
        Public Apt As String
        Public City As String
        Public State As String
        Public Zip As String
        Public VerifiedStatus As Integer
        Public Lat As Single
        Public Lng As Single
    End Structure
    Public Property CurrentPlace() As Place
        Get
            Dim ThisPlace As New Place
            ThisPlace.Street = Trim(Me.txtStreet.Text)
            ThisPlace.Apt = Trim(txtAptNo.Text)
            ThisPlace.City = Trim(txtCity.Text)
            ThisPlace.State = Trim(lblState.Text)
            ThisPlace.Zip = Trim(txtZip.Text)
            ThisPlace.Lat = MyLat
            ThisPlace.Lng = MyLng
            ThisPlace.PlaceName = "" 
            'This control doesn't take placenames but they exist in the structure.
            ThisPlace.VerifiedStatus = MyVerifiedStatus
            Return ThisPlace
        End Get
        Set(ByVal value As Place)
            AsLoadedApt = Trim(value.Apt)
            AsLoadedCity = Trim(value.City)
            AsLoadedLat = value.Lat
            AsLoadedLng = value.Lng
            AsLoadedState = Trim(value.State)
            AsLoadedStreet = Trim(value.Street)
            AsLoadedVerifiedStatus = value.VerifiedStatus
            AsLoadedZip = Trim(value.Zip)
            txtStreet.Text = AsLoadedStreet
            txtAptNo.Text = AsLoadedApt
            txtCity.Text = AsLoadedCity
            lblState.Text = AsLoadedState
            txtZip.Text = AsLoadedState
            MyVerifiedStatus = AsLoadedVerifiedStatus
            MyLat = AsLoadedLat
            MyLng = AsLoadedLng
            Call ShowStatus()
        End Set
    End Property
4

1 に答える 1

2

コントロール内の構造とプロジェクトの一部としての usercontrol ファイルを使用すると、構造は usercontrol の一部として修飾することで型として公開されます。

Dim NewPlace As New UserControl1.Place

同じ構造を使用しているため、NewPlace オブジェクトを使用して CurrentPlace プロパティを設定できます。

    With NewPlace
        .Apt = "Apt"
        .City = "City"
        .Lat = 0
        .Lng = 0
        .State = "State"
        .Street = "Street"
        .Zip = "Zip"
    End With
    UserControl11.CurrentPlace = NewPlace

同じソリューション内の別のプロジェクトの一部である場合は、プロジェクトの資格も追加します。

于 2013-10-24T02:25:16.750 に答える