2016-09-06 1 views
1

Ich habe eine WinForms-Notiz-App mit C# und VS2015 erstellt, in der der Benutzer Notizen schreiben und speichern kann, während das Formular geöffnet wird. Sobald der Nutzer die App geschlossen und erneut geöffnet hat, werden die gespeicherten Notizen jedoch nicht mehr angezeigt. Wie kann ich die Notizen für das nächste Öffnen speichern, damit er sie wieder sehen, bearbeiten und lesen kann? Hier ist mein Code:Wie kann ich Notizen speichern, die der Benutzer für das nächste Öffnen geschrieben hat?

private void Form1_Load(object sender, EventArgs e) 
{ 
    table = new DataTable(); 
    table.Columns.Add("Title", typeof(string)); 
    table.Columns.Add("Message", typeof(string)); 
    dataGridView1.DataSource = table; 
    dataGridView1.Columns["Message"].Visible = false; 
    dataGridView1.Columns["Title"].Width = 140; 
} 

private void btnNew_Click(object sender, EventArgs e) 
{ 
    textBox1.Clear(); 
    textBox2.Clear(); 
} 
private void btnSave_Click(object sender, EventArgs e) 
{ 
    table.Rows.Add(textBox1.Text, textBox2.Text); 
    textBox1.Clear(); 
    textBox2.Clear(); 
} 

private void btnRead_Click(object sender, EventArgs e) 
{ 
    int index = dataGridView1.CurrentCell.RowIndex; 
    if (index > -1) 
    { 
     textBox1.Text = table.Rows[index].ItemArray[0].ToString(); 
     textBox2.Text = table.Rows[index].ItemArray[1].ToString(); 
    } 
} 

private void btnDelete_Click(object sender, EventArgs e) 
{ 
    int index = dataGridView1.CurrentCell.RowIndex; 
    table.Rows[index].Delete(); 
} 

Here's my form image:

+2

Speichern Sie sie als Textdateien oder in einer Datenbank. – stuartd

+1

Wenn Sie keine Datenbank haben, können Sie die Methode "WriteXml" (https://msdn.microsoft.com/en-us/library/3hyx9hb4 (v = vs.110) .aspx) Ihrer Daten verwenden Tabelle, um es in einer Datei zu speichern. Um sie dann erneut zu laden, können Sie die Methode ['ReadXml'] (https://msdn.microsoft.com/en-us/library/fs0z9zxd (v = vs.110) .aspx) verwenden. –

+0

@RezaAghaei Kann ich bitte ein Codebeispiel haben? – Ayman

Antwort

1

Sie können Ihre Anwendungseinstellungen verwenden, um einige Daten zu speichern. Der Standardbereich ist "Benutzer" (nur für den aktuellen Benutzer gespeichert), kann aber auch "Anwendung" sein (für jeden Nutzer Ihrer App verfügbar). Sie können auf diese Daten über Properties.Settings.Default.myCustomSetting; zugreifen

0

Der Grund ist, dass während der Ausführung des Programms das Bild des Prozesses im Arbeitsspeicher (RAM) ist und wenn das Programm beendet ist, werden seine Seiten aus dem Arbeitsspeicher geworfen und sein Datenteil wird nirgendwo speichern (seine aktuellen Daten). Wenn Sie Ihr Programm erneut ausführen, wird das Programm verarbeitet (kommt von hart zum Hauptspeicher) und es lädt von Anfang an und hat keine Kenntnisse über vorherige Sitzungen, es sei denn, Ihr Programm selbst verweist irgendwo auf die Festplatte und verwendet die vordefinierten Daten.
Es gibt so viele Möglichkeiten, dies zu tun, ich sage einige von ihnen:
1) Erstellen und verwenden Sie eine Datenbank, die die gleichen Kriterien wie Ihre Tabelle hier hat.
2) Erstellen Sie Binär- oder Textdateien mit Methoden, die im System.IO-Namespace verfügbar sind, der den Inhalt im Dateisystem (auf Ihrer Festplatte) speichert. Wenn Ihr Projekt gestartet wird, laden Sie den Inhalt aus der gespeicherten Datei.
3) Verwenden Sie die Serialisierung mit unterschiedlichen Ansätzen in C#, z. B. den Namespace System.Xml.Serialization.

+1

Eigentlich muss ich erwähnen, dass es auch eine andere einfache Möglichkeit gibt, RichTextBox zu verwenden und seine Save-Methode zu verwenden, die Inhalte als .rtf-Erweiterung speichern kann. – Media

Verwandte Themen