Bardzo proszę o pomoc. Nie wiem jak poradzić sobie z pewnym problemem. Chodzi mi o zapisywanie do pliku dat czyli serializacje. Zamieszczam poniżej kod który czasami działa poprawnie(tak mi się wydaje) a czasami nie. Urachamia się i wczytuje dane do listy podane w kodzie i wyśietla. Teraz w datagridview edytuje dodaje usuwam itd. i zapisuje do pliku. I teraz gdy wczytuje dane z pliku do datagridview to czasami wczytuja się wszystkie dane poprawnie a czasmi po wczytaniu wyswietlaja się tylko dane te z kodu. Spedziłem dwa dni na poszukiwanie rozwiązania i niestety NIC!!
public partial class kontrahenci : Form
{
[Serializable]
public class Kontrahent
{
public int Id
{
get
{
return id;
}
set
{
id = value;
}
}
private int id;
public string FirstName { get; set; }
public string LastName { get; set; }
List<Kontrahent> kontra = new List<Kontrahent>();
public kontrahenci()
{
InitializeComponent();
kontra.Add(new Kontrahent() { Id = 1, FirstName = "Michał", LastName = "Nowak});
kontra.Add(new Kontrahent() { Id = 2, FirstName = "Monika", LastName = "Hanc" });
kontra.Add(new Kontrahent() { Id = 3, FirstName = "Jan", LastName = "Kowalski" });
kontra.Add(new Kontrahent() { Id = 4, FirstName = "Franek", LastName = "Zielichowski" });
}
private void kontrahenci_Load(object sender, EventArgs e)
{
bindingSource1.DataSource = kontra;
dataGridView1.DataSource = bindingSource1;
bindingNavigator1.BindingSource = bindingSource1;
}
private void button2_Click(object sender, EventArgs e)
{
//---------------Zapisywanie--------------
if (File.Exists(@"c:\fakturka\kontrahenci.dat"))
{
File.Delete(@"c:\fakturka\kontrahenci.dat");
}
string path = @"c:\fakturka\kontrahenci.dat";
using (Stream output = File.Create(path))
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(output, kontra);
MessageBox.Show("Lista kontrahentów zostala zapisana na dysku");
}
}
private void button3_Click(object sender, EventArgs e)
{
//---------------Odczytywanie--------------
string path = @"c:\fakturka\kontrahenci.dat";
using (Stream input = File.OpenRead(path))
{
BinaryFormatter formatter = new BinaryFormatter();
List<Kontrahent> kontra = (List<Kontrahent>)formatter.Deserialize(input);
bindingSource1.DataSource = kontra;
dataGridView1.DataSource = bindingSource1;
bindingNavigator1.BindingSource = bindingSource1;
MessageBox.Show("Dane zostaly wczytane!");
}
}