XML DataGridView ComboBox
Este exemplo cobre as seguintes àreas :
- Class
- Collections
- Ler e escrever para XML
- ComboBox simples
Form de teste
Public
Class Form1
Private
Sub ButtonWrite2_Click(ByVal
sender As System.Object,
ByVal e
As System.EventArgs)
Handles
ButtonWrite2.Click
Grid2XML(AutoresDataGridView,
New Autores,
GetType(Autores),
Me.TextBoxAuthorFilename.Text)
Grid2XML(BooksCollectionsDataGridView,
New BooksCollections,
GetType(BooksCollections),
Me.TextBoxBookFilename.Text)
End
Sub
Private
Sub ButtonRead2_Click(ByVal
sender As System.Object,
ByVal e
As System.EventArgs)
Handles
ButtonRead2.Click
XML2Grid(AutoresDataGridView,
New Autores,
GetType(Autores),
Me.TextBoxAuthorFilename.Text)
XML2Grid(BooksCollectionsDataGridView,
New BooksCollections,
GetType(BooksCollections),
Me.TextBoxBookFilename.Text)
End
Sub
End Class
![](imagens/img11.jpg)
Para Criar uma DataGridView com base numa classe tem
de criar um objecto da classe
Depois de criada a DataGridView tem de alterar as
propriedades da comboBox
Para Copiar os dados da DataGridView para Ficheiro XML (Serialize)
Public
Function Grid2XML(ByVal
DataGridView2XML As
DataGridView, ByVal
ObjClasse As
Object,
ByVal CollectionType
As System.Type,
Optional
ByRef FileXML
As
String =
"")
As
Boolean
Dim TemFile
As
Boolean =
False
Dim Gravou
As
Boolean =
False
If FileXML =
""
Then
Dim
saveFileDialog1 As
New SaveFileDialog()
saveFileDialog1.FileName = FileXML
saveFileDialog1.Filter =
"txt files (*.XML)|*.XML|All
files (*.*)|*.*"
saveFileDialog1.FilterIndex = 1
saveFileDialog1.RestoreDirectory =
True
If
saveFileDialog1.ShowDialog() = DialogResult.OK
Then
FileXML = saveFileDialog1.FileName
TemFile = True
Else
TemFile = False
End
If
Else
TemFile = True
End
If
If TemFile
Then
'----------Serialize
Dim writer
As
New
System.Xml.Serialization.XmlSerializer(CollectionType)
Dim file
As
New
System.IO.StreamWriter(FileXML)
For
Each Temp
In
DataGridView2XML.DataSource
ObjClasse.Add(Temp)
Next
writer.Serialize(file, ObjClasse)
file.Close()
'----------
Gravou = True
Else
Gravou = False
End
If
Return Gravou
End Function
Para Copiar os dados do Ficheiro XML para DataGridView (Deserialize)
Public
Function XML2Grid(ByVal
DataGridView2XML As
DataGridView, ByVal
ObjClasse As
Object, _
ByVal
CollectionType As
System.Type, Optional
ByRef FileXML
As
String =
"")
As
Boolean
Dim TemFile
As
Boolean =
False
Dim Leu
As
Boolean =
False
If FileXML =
""
Then
Dim
OpenFileDialog1 As
New OpenFileDialog()
OpenFileDialog1.FileName = FileXML
OpenFileDialog1.Filter =
"txt files (*.XML)|*.XML|All
files (*.*)|*.*"
OpenFileDialog1.FilterIndex = 1
OpenFileDialog1.RestoreDirectory
= True
If
OpenFileDialog1.ShowDialog() = DialogResult.OK
Then
FileXML = OpenFileDialog1.FileName
TemFile = True
Else
TemFile = False
End
If
Else
TemFile = True
End
If
If TemFile
Then
Try
'----------Deserialize
Dim TempColl
As
New
Object
Dim reader
As
New
System.Xml.Serialization.XmlSerializer(CollectionType)
Dim file
As
New
System.IO.StreamReader(FileXML)
TempColl = reader.Deserialize(file)
file.Close()
'----------
DataGridView2XML.DataSource.Clear()
For
Each Temp
In TempColl
DataGridView2XML.DataSource.Add(Temp)
Next
Leu = True
Catch ex
As Exception
MsgBox(ex.Message.ToString)
Leu = False
End
Try
Else
Leu = False
End
If
Return Leu
End Function