mardi 7 avril 2015

winforms aplication settings not saving

I have a problem with saving application settings which i add dynamically. Although i call Save() metod the settings are not saved and next time i run the program i get error - the setting property was not found. I spent ages trying to figure it out. Could anyone tell me what am i doing wrong. Ustawienia is a public static class, ustawienia.wyniki is form containing listview .



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Collections;
using System.IO;
using System.Configuration;

namespace WindowsForms_Saper_v1
{
public partial class Form3 : Form
{
static bool czy_dodano;
static bool utworzono;
public Form3()
{
InitializeComponent();


}

private void ok_click(object sender, EventArgs e)
{




var ksywka = new SettingsProperty (highscores.Default.Properties["ksywka"]);
ksywka.Name = "ksywka"+highscores.Default.ktory.ToString();
ksywka.DefaultValue = textBox1.Text;
highscores.Default.Properties.Add(ksywka);


var czas = new SettingsProperty(highscores.Default.Properties["czas"]);
czas.Name = "czas" + highscores.Default.ktory.ToString();
czas.DefaultValue = ustawienia.elapsed.Seconds;
highscores.Default.Properties.Add(czas);


var rozmiar = new SettingsProperty(highscores.Default.Properties["rozmiar"]);
rozmiar.Name = "rozmiar" + highscores.Default.ktory.ToString();
rozmiar.DefaultValue = ustawienia.ile_wierszy.ToString() + "x" + ustawienia.ile_kolumn.ToString();
highscores.Default.Properties.Add(rozmiar);

highscores.Default.ktory++;

highscores.Default.Save();
czy_dodano = true;
wypisz_liste();
this.Close();
}

private void Form3_FormClosing(object sender, FormClosingEventArgs e)
{



wypisz_liste();

highscores.Default.Save();
this.Close();
}

public static void wypisz_liste()
{
if (ustawienia.lista == null)
ustawienia.lista = new List<Highscore>();
if(!utworzono)
for (int i = 0; i < highscores.Default.ktory; i++)
{
String nazwa = (String)highscores.Default["ksywka" + i.ToString()];
int czas = (int)highscores.Default["czas" + i.ToString()];
String rozmiar = (String)highscores.Default["rozmiar" + i.ToString()];
Highscore wynik = new Highscore(nazwa, czas, rozmiar);
if (!ustawienia.lista.Contains(wynik))
ustawienia.lista.Add(wynik);
utworzono = true;
czy_dodano = false;
}
else if (czy_dodano)
{
String nazwa = (String)highscores.Default["ksywka" + (highscores.Default.ktory-1).ToString()];
int czas = (int)highscores.Default["czas" + (highscores.Default.ktory - 1).ToString()];
String rozmiar = (String)highscores.Default["rozmiar" + (highscores.Default.ktory - 1).ToString()];
Highscore wynik = new Highscore(nazwa, czas, rozmiar);
if (!ustawienia.lista.Contains(wynik))
ustawienia.lista.Add(wynik);
czy_dodano = false;
}
ustawienia.lista.Sort(new myComparer());
ListView wpisy = (ListView)ustawienia.wyniki.Controls.Find("listView1", true)[0];
foreach (ListViewItem item in wpisy.Items)
wpisy.Items.Remove(item);

foreach (var e in ustawienia.lista.Distinct())
{
ListViewItem newItem = new ListViewItem(new[] { e.ksywka, e.czas.ToString(), e.rozmiar });
wpisy.Items.Add(newItem);
}
highscores.Default.Save();
ustawienia.wyniki.Show();
}

}
public class Highscore
{

public String ksywka;
public int czas;
public String rozmiar;

public Highscore(String ksywka, int czas, String rozmiar)
{
this.ksywka = ksywka;
this.czas = czas;
this.rozmiar = rozmiar;
}
public static void wypisz_liste()
{
if(ustawienia.lista==null)
ustawienia.lista = new List<Highscore>();

for (int i = 0; i < highscores.Default.ktory; i++)
{
String nazwa=(String)highscores.Default["ksywka"+i.ToString()];
int czas = (int)highscores.Default["czas" + i.ToString()];
String rozmiar = (String)highscores.Default["rozmiar" + i.ToString()];
Highscore wynik = new Highscore(nazwa, czas, rozmiar);
if(!ustawienia.lista.Contains(wynik))
ustawienia.lista.Add(wynik);

}
ustawienia.lista.Sort(new myComparer());
ListView wpisy = (ListView)ustawienia.wyniki.Controls.Find("listView1", true)[0];
foreach (ListViewItem item in wpisy.Items)
wpisy.Items.Remove(item);

foreach (var e in ustawienia.lista.Distinct())
{
ListViewItem newItem = new ListViewItem(new[] { e.ksywka, e.czas.ToString(),e.rozmiar });
wpisy.Items.Add(newItem);
}

ustawienia.wyniki.Show();
}


}




public class myComparer : IComparer<Highscore>
{

int IComparer<Highscore>.Compare(Highscore x, Highscore y)
{

if (x == null)
return -1;
if (y == null)
return 1;
if (x.czas < y.czas)
return 1;
else if (x.czas > y.czas)
return -1;
else
{
if (x.ksywka != String.Empty && y.ksywka != String.Empty)
return String.Compare(x.ksywka, y.ksywka);
else if (x.ksywka == String.Empty)
return -1;
else return 1;
}
}

}
}



}

Aucun commentaire:

Enregistrer un commentaire