Reputation: 11
I am relatively new to VB.NET Classes that define data structures. Also the terminology is a little unfamiliar.
I have defined the following Class structures:
Public Class CatalogInfoDef
Public CatalogName As String
Public CatalogYear As String
Public CatalogNumber As String
End Class
Public Class ParameterDef
Public Country As String
Public GeographicArea As String
Public Catalogs As List(Of CatalogInfoDef)
Public Class IssueDate
Public Month As String
Public Day As String
Public Year As String
End Class
Public Class Size
Public Width As String
Public Height As String
End Class
Public Printer As String
Public SearchKeywords As List(Of String)
Public Class OtherInfo
Public Condition As String
Public PrintMethod As String
End Class
End Class
In the Main Form I have the definition: Private ParameterInfo as New ParameterDef
I am able to insert data into the fields that are in the main Class, Country, etc.. However, I am having problems inserting data into fields such as: IssueDate (Month, Day, Year).
How do I access the data in these Class fields? Am I missing some parameter? Is there a better way to define ParameterDef?
Upvotes: 1
Views: 114
Reputation: 6111
What you're doing is defining classes within a class when it sounds like you want to define a property of a custom class. Something more along the lines of:
Public Class ParameterDef
Public Property Country As String
Public Property GeographicArea As String
Public Property Catalogs As List(Of CatalogInfoDef)
Public Property IssueDate As DateTime
Public Property Size As Size
Public Property Printer As String
Public Property SearchKeywords As List(Of String)
Public Property OtherInfo As OtherInfo
End Class
Public Class OtherInfo
Public Condition As String
Public PrintMethod As String
End Class
Then when you go to set the properties it would be:
Private ParameterInfo as New ParameterDef() With {
.Country = "...",
.GeographicArea = "..."
.Catalogs = New CatalogInfoDef() With {
.CatalogName = "...",
.CatalogYear = "...",
.CatalogNumber = "..."
},
.IssueDate = New DateTime(year, month, day) ' replace with actual values
.Size = New Size(width, height) ' replace with actual values
.Printer = "...",
.SearchKeywords = New List(Of String)(),
.OtherInfo = New OtherInfo() With {
.Condition = "...",
.PrintMethod = "..."
}
}
Also, notice how I removed your custom Date
and Size
class. This is because those classes already exist in the System
and System.Drawing
namespaces respectively.
Upvotes: 1