Moduler>Databinding>Enkelt register
Et enkelt register
Jeg viser ikke Form1.Designer.cs. Du kan laste ned prosjektet og inspisere all koden, se referanser.
Person
Datasettene er beskrevet ved klasse Person, med tre properties og en metode:
using System; using System.Collections.Generic; using System.Text; namespace Register { class Person: Object { protected string navn; protected string mobil; protected string epost; public Person(string n, string m, string e) { navn = n; mobil = m; epost = e; } public Person(string line) { navn = "-"; mobil = "-"; epost = "-"; string[] list = line.Split(','); if (list.Length > 0) navn = list[0]; if (list.Length > 1) mobil = list[1]; if (list.Length > 2) epost = list[2]; } public string Navn { get { return navn; } set { navn = value; } } public string Mobil { get { return mobil; } set { mobil = value; } } public string EPost { get { return epost; } set { epost = value; } } public override string ToString() { return navn + "," + mobil + "," + epost; } } }
Form
Koden i Formen er enkel, slik:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Collections; using System.IO; namespace Register { public partial class Form1 : Form { public Form1() { InitializeComponent(); LoadData(); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { SaveData(); } private void insertToolStripMenuItem_Click(object sender, EventArgs e) { personBindingSource. Add(new Person("<skriv her>,<skriv her>,<skriv her>")); } private void deleteToolStripMenuItem_Click(object sender, EventArgs e) { personBindingSource.RemoveCurrent(); } protected void LoadData() { StreamReader sr = null; try { // load existing persons from file sr = new StreamReader(Path.Combine(Application.StartupPath, "data/personer.txt")); sr.BaseStream.Position = 0; while (!sr.EndOfStream) personBindingSource.Add(new Person(sr.ReadLine())); // if file was empty if (personBindingSource.Count == 0) throw new Exception("Empty file"); dataGridView1.Refresh(); } catch (Exception e) { MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK); personBindingSource.Add( new Person("<skriv her>,<skriv her>,<skriv her>,")); } finally{ if(sr!=null) sr.Close(); } } protected void SaveData() { StreamWriter sw = null; try { // save existing persons to file sw = new StreamWriter(Path.Combine(Application.StartupPath, "data/personer.txt")); sw.BaseStream.Position = 0; foreach (Object obj in personBindingSource.List) sw.WriteLine(obj.ToString()); } catch (Exception e) { MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK); } finally { if (sw != null) sw.Close(); } } } }
Vi ser at vi forutsetter en datafile, personer.txt, som skal ligge i samme katalog som applikasjonen. Dersom en slik fil ikke finnes, lages den.