1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary
Public Class Form1
Public MaStackup As New StackupClass
Public monFichier As String = "stack.stk"
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim dlgOpen As New OpenFileDialog
dlgOpen.Filter = "Files(*.stk)|*.stk"
Dim Rep = dlgOpen.ShowDialog
If dlgOpen.FileName.Length = 0 Then Return
Dim myFileStream As Stream = File.OpenRead(dlgOpen.FileName)
Dim deserializer As New BinaryFormatter()
MaStackup = CType(deserializer.Deserialize(myFileStream), StackupClass)
myFileStream.Close()
'--------Clear des DataBindings courants sinon un exception "fire"------
DataGridView1.DataBindings.Clear()
DataGridView1.DataBindings.Add(New Binding("Datasource", MaStackup, "Dimensions") With {.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged})
txtName.DataBindings.Clear()
txtName.DataBindings.Add(New Binding("Text", MaStackup.Dimensions, "Name", True,
DataSourceUpdateMode.OnPropertyChanged, ""))
'--------Clear
txtNominalValue.DataBindings.Clear()
'--------Clear
txtNominalValue.DataBindings.Add(New Binding("Text", MaStackup.Dimensions, "NominalValue", True,
DataSourceUpdateMode.OnPropertyChanged, 0.0))
End Sub
Private Sub ButtonOuvrir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonOuvrir.Click
Dim dlgOpen As New OpenFileDialog
dlgOpen.Filter = "Files(*.stk)|*.stk"
Dim Rep = dlgOpen.ShowDialog
If Rep = DialogResult.OK Then
If dlgOpen.FileName.Length = 0 Then Return
Dim fs As Stream = File.OpenRead(dlgOpen.FileName)
Dim deserializer As New BinaryFormatter()
MaStackup = CType(deserializer.Deserialize(fs), StackupClass)
fs.Close()
End If
'--------Clear des DataBindings
DataGridView1.DataBindings.Clear()
DataGridView1.DataBindings.Add(New Binding("Datasource", MaStackup, "Dimensions") With {.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged})
'2 controls text pour voir la synchronisation
'--------Clear
txtName.DataBindings.Clear()
txtName.DataBindings.Add(New Binding("Text", MaStackup.Dimensions, "Name", True,
DataSourceUpdateMode.OnPropertyChanged, ""))
'--------Clear
txtNominalValue.DataBindings.Clear()
txtNominalValue.DataBindings.Add(New Binding("Text", MaStackup.Dimensions, "NominalValue", True,
DataSourceUpdateMode.OnPropertyChanged, 0.0))
End Sub
'serialize notre fichier test
Private Sub btnTestSerialize_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTestSerialize.Click
Dim stackTest As StackupClass = GetDataTest()
Dim dlgSave As New SaveFileDialog
Dim Rep = dlgSave.ShowDialog
If Rep = DialogResult.OK Then
dlgSave.FileName = monFichier
Dim fs As Stream = File.OpenWrite(dlgSave.FileName)
Dim serializer As New BinaryFormatter()
serializer.Serialize(fs, stackTest)
fs.Close()
End If
End Sub
Private Function GetDataTest() As StackupClass
Dim testStackClass As StackupClass = New StackupClass
Dim std As StackupDimension
Dim rnd As Random = New Random(DateTime.Now.Second)
For index As Integer = 1 To 10
std = New StackupDimension
std.Name = "Pile" + (index * 100).ToString
std.NominalValue = Convert.ToDecimal(100 * rnd.NextDouble())
testStackClass.Dimensions.Add(std)
Next
Return testStackClass
End Function
'validation virgule decimal "francais'
Private Sub txtNominalValue_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtNominalValue.TextChanged
Dim result As Decimal = 0.0
If Not Decimal.TryParse(txtNominalValue.Text, result) Then
txtNominalValue.Clear()
MessageBox.Show("need french decimal value...")
End If
DataGridView1.Refresh()
End Sub
End Class |
Partager