// Add a new entry with the displayed data private void addEntry() { try { // Create a new entry with all the data JournalEntry entry = new JournalEntry(); entry.Date = DateTime.Now; entry.Title = textBox_title.Text; ++maxEntryId; entry.Id = maxEntryId; entry.Text = textBox_entry.Text; // Add the new entry currentJournal.Entries.Add(entry); // Update displayed entry info updateDisplayedInfo(entry); } catch (Exception except) { MessageBox.Show("An error occurred when adding entry: " + except.Message); } }
// Update displayed entry ID and index private void updateDisplayedInfo(JournalEntry row) { try { // Display the entry ID label_entryId.Content = labelEntryIdPrefix + Environment.NewLine + row.Id; // Save ID and index of displayed entry displayedEntryId = row.Id; displayedEntryIndex = currentJournal.Entries.IndexOf (currentJournal.Entries.Single(i => i.Id == displayedEntryId)); // Reset indication that displayed entry has changed displayedEntryChanged = false; } catch (Exception except) { MessageBox.Show ("An error occurred when updating displayed entry information: " + except.Message); } }
// Entry selection changed in grid: display entry data // If the displayed data has changed, offer chance to save it private void dataGrid_JournalEntries_SelectionChanged(object sender, SelectionChangedEventArgs e) { // Check that non-empty row has been selected if (dataGrid_JournalEntries.SelectedItem != null && dataGrid_JournalEntries.SelectedItem is JournalEntry) { // Get selected row JournalEntry rowEntry = new JournalEntry(); rowEntry = (JournalEntry)dataGrid_JournalEntries.SelectedItem; // Before displaying selected row, // save displayed data if it has changed if (displayedEntryChanged) { SaveChanges(); } // Display entry data of selected row textBox_title.Text = rowEntry.Title; textBox_entry.Text = rowEntry.Text; // Update displayed entry info updateDisplayedInfo(rowEntry); } }