این تقریبا همون کد اولیه هست که دارم استفاده میکنم :
کلاس Events:
کلاس GHamari :کد:Imports System.IO
Imports System.Xml.Serialization
<Serializable()> _
Public Class Events
Private X_FilePath As String = Path.Combine(Application.StartupPath, "Events.xml")
'_____________________________________________________
Public Property Shamsi() As Shamsi
Get
Return x_Shamsi
End Get
Set(ByVal value As Shamsi)
x_Shamsi = value
End Set
End Property
Private X_Shamsi As Shamsi
Public Property Miladi() As Miladi
Get
Return X_Miladi
End Get
Set(ByVal value As Miladi)
X_Miladi = value
End Set
End Property
Private X_Miladi As Miladi
Public Property Ghamari() As Ghamari
Get
Return X_Ghamari
End Get
Set(ByVal value As Ghamari)
X_Ghamari = value
End Set
End Property
Private X_Ghamari As Ghamari
Public Sub New()
Me.Shamsi = = New Shamsi()
Me.Miladi = New Miladi()
Me.Ghamari = New Ghamari()
End Sub
Public Sub Load()
If Not File.Exists(X_FilePath) Then
Return
End If
Dim Deserializer = New XmlSerializer(GetType(Events))
Using Stream = New FileStream(X_FilePath, FileMode.Open, FileAccess.Read)
Dim LoadedEvents = TryCast(Deserializer.Deserialize(Stream), Events)
If LoadedEvents IsNot Nothing Then
Me.Shamsi = LoadedEvents.Shamsi
Me.Miladi = LoadedEvents.Miladi
Me.Ghamari = LoadedEvents.Ghamari
End If
End Using
End Sub
Public Sub Save()
Dim Serializer = New XmlSerializer(GetType(Events))
Using Stream = New FileStream(X_FilePath, FileMode.OpenOrCreate, FileAccess.Write)
Serializer.Serialize(Stream, Me)
End Using
End Sub
End Class
کلاس Shamsi :کد:<Serializable()> _
Public Class Ghamari
Implements IInfo
Private X_Day As String
Private X_Month As String
Private X_Events As String
Private X_Holiday As String
Private X_Dates As String
Private X_PicturePath As String
'____________________________________________
Public Property Day() As String Implements IInfo.Day
Get
Return X_Day
End Get
Set(ByVal value As String)
X_Day = value
End Set
End Property
Public Property Month() As String Implements IInfo.Month
Get
Return X_Month
End Get
Set(ByVal value As String)
X_Month = value
End Set
End Property
Public Property Events() As String Implements IInfo.Events
Get
Return X_Events
End Get
Set(ByVal value As String)
X_Events = value
End Set
End Property
Public Property Holiday() As String Implements IInfo.Holiday
Get
Return X_Holiday
End Get
Set(ByVal value As String)
X_Holiday = value
End Set
End Property
Public Property Dates() As String Implements IInfo.Dates
Get
Return X_Dates
End Get
Set(ByVal value As String)
X_Dates = value
End Set
End Property
Public Property PicturePath() As String Implements IInfo.PicturePath
Get
Return X_PicturePath
End Get
Set(ByVal value As String)
X_PicturePath = value
End Set
End Property
End Class
کلاس Miladi :کد:<Serializable()> _
Public Class Shamsi
Implements IInfo
Private X_Day As String
Private X_Month As String
Private X_Events As String
Private X_Holiday As String
Private X_Dates As String
Private X_PicturePath As String
'____________________________________________
Public Property Day() As String Implements IInfo.Day
Get
Return X_Day
End Get
Set(ByVal value As String)
X_Day = value
End Set
End Property
Public Property Month() As String Implements IInfo.Month
Get
Return X_Month
End Get
Set(ByVal value As String)
X_Month = value
End Set
End Property
Public Property Events() As String Implements IInfo.Events
Get
Return X_Events
End Get
Set(ByVal value As String)
X_Events = value
End Set
End Property
Public Property Holiday() As String Implements IInfo.Holiday
Get
Return X_Holiday
End Get
Set(ByVal value As String)
X_Holiday = value
End Set
End Property
Public Property Dates() As String Implements IInfo.Dates
Get
Return X_Dates
End Get
Set(ByVal value As String)
X_Dates = value
End Set
End Property
Public Property PicturePath() As String Implements IInfo.PicturePath
Get
Return X_PicturePath
End Get
Set(ByVal value As String)
X_PicturePath = value
End Set
End Property
End Class
کلاس IInfo :کد:<Serializable()> _
Public Class Miladi
Implements IInfo
Private X_Day As String
Private X_Month As String
Private X_Events As String
Private X_Holiday As String
Private X_Dates As String
Private X_PicturePath As String
'____________________________________________
Public Property Day() As String Implements IInfo.Day
Get
Return X_Day
End Get
Set(ByVal value As String)
X_Day = value
End Set
End Property
Public Property Month() As String Implements IInfo.Month
Get
Return X_Month
End Get
Set(ByVal value As String)
X_Month = value
End Set
End Property
Public Property Events() As String Implements IInfo.Events
Get
Return X_Events
End Get
Set(ByVal value As String)
X_Events = value
End Set
End Property
Public Property Holiday() As String Implements IInfo.Holiday
Get
Return X_Holiday
End Get
Set(ByVal value As String)
X_Holiday = value
End Set
End Property
Public Property Dates() As String Implements IInfo.Dates
Get
Return X_Dates
End Get
Set(ByVal value As String)
X_Dates = value
End Set
End Property
Public Property PicturePath() As String Implements IInfo.PicturePath
Get
Return X_PicturePath
End Get
Set(ByVal value As String)
X_PicturePath = value
End Set
End Property
End Class
Public Interface IInfo
Property Day() As String
Property Month() As String
Property Events() As String
Property Holiday() As String
Property Dates() As String
Property PicturePath() As String
End Interface
و کد درون فرم در دکمه ی Add :
حالا این کد رو طوری تغییر بدید که وقتی یه مقداری رو add کردیم روی مقدار اولی اضافه نشه .کد:Dim events = New Events()
events.Load()
events.Shamsi.Day = TextBox1.Text
events.Shamsi.Month = TextBox2.Text
events.Shamsi.Events = TextBox3.Text
events.Shamsi.Holiday = TextBox4.Text
events.Shamsi.Dates = TextBox5.Text
events.Shamsi.PicturePath = TextBox6.Text
events.Save()
و بشه از فایل خوند و موقع خوندن مقدار ها بره توی ArrayList مثلا 5 تا ArrayList تععین کنیم . هر کدوم برای یه مقدار مثل ماه ، روز و ... .