Zamknięcie pliku

0

Cześć.
Mam problem z tworzeniem aplikacji - notatnik w C#

Sprawa wygląda tak, że po naciśnięciu krzyżyka w celu zamknięcia mojej aplikacji wyskakuje komunikat: "Czy chcesz zapisać potrzebne dane?". Fajna sprawa, ale co jeżeli dokument jest pusty? Chciałbym, aby ten komunikat nie wyskakiwał w przypadku pustego arkusza. Próbuję realizować to zadanie na podstawie opisu z książki:

"Pytanie o zachowanie dokumentu nie ma sensu, jeżeli nie został on zmieniony
po otwarciu aplikacji lub po ostatnim zapisie na dysku. Dlatego warto w klasie
Form1 zdefiniować pole tekstZmieniony typu bool, którego wartość będzie
ustalana na true w przypadku modyfikacji zawartości notatnika (pomocne
będzie zdarzenie TextChanged komponentu TextBox). Jeżeli podczas zamykania formy jest ono równe false, komunikat z pytaniem nie zostanie pokazany."

public partial class Form1 : Form
    {
        bool tekstZmieniony = false;

Według tej instrukcji zdefiniowałem już w klasie Form1 pole tekstZmieniony, ale nie wiem co dalej ustawić :(

0

Musisz napisać funkcję obsługującą zdarzenie TextChanged i tam ustawić wartość zmiennej na true.

0

To już wiedziałem, tylko w jaki sposób napisać tą funkcję? Zakładam, że

private void textBox1_TextChanged(object sender, EventArgs e)
        {
            tekstZmieniony = true;

nie wystarczy.

0

Piszesz tę funkcję właśnie w taki sposób, musisz jeszcze przypisać ją do TextBoxa:

textBox1.TextChanged += new EventHandler(textBox1_TextChanged);
0

Przypisałem tę funkcję do texboxa ale nie za pomocą tego kodu tylko klkając w Properties -> Events(nie wiem czy tu jest jakaś różnica)? Niestety po wciśnięciu krzyżyka, w przypadku pustego arkusza dalej wyświetla się ten komunikat. Coś tu nie działa :(

0

Nie ma różnicy. Możesz pokazać cały kod?

0
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;

namespace Notatnik.NET
{
    public partial class Form1 : Form
    {
        bool tekstZmieniony = false;

        public Form1()
        {
            InitializeComponent();
        }

        private void plikToolStripMenuItem_Click(object sender, EventArgs e)
        { 
        }

        private void zamknijToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }
        public void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            DialogResult dr = MessageBox.Show("Czy zapisać zmiany w edytowanym dokumencie?",
                this.Text,
                MessageBoxButtons.YesNoCancel,
                MessageBoxIcon.Question,
                MessageBoxDefaultButton.Button3);
            switch (dr)
            {
                case DialogResult.Yes: MessageBox.Show("Wstawić wywołanie metody zapisującej zawartość notatnika do pliku?");
                    break;
                case DialogResult.No: 
                    break;
                case DialogResult.Cancel: e.Cancel = true; 
                    break;
                default: e.Cancel = true;
                    break;     
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            tekstZmieniony = true;
        }
    }
}
1

Musisz dać ifa, żeby ten dialog pokazywał się tylko wtedy, kiedy zmienna tekstZmieniony jest true.

0

No, no faktycznie podziałało :) Dla innych, którzy będą mieli problem wklejam kod:

public void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {

//To trzeba było dodać !! 
          **  if (tekstZmieniony == true)**
            {


                DialogResult dr = MessageBox.Show("Czy zapisać zmiany w edytowanym dokumencie?",
                    this.Text,
                    MessageBoxButtons.YesNoCancel,
                    MessageBoxIcon.Question,
                    MessageBoxDefaultButton.Button3);
                switch (dr)
                {
                    case DialogResult.Yes: MessageBox.Show("Wstawić wywołanie metody zapisującej zawartość notatnika do pliku?");
                        break;
                    case DialogResult.No:
                        break;
                    case DialogResult.Cancel: e.Cancel = true;
                        break;
                    default: e.Cancel = true;
                        break;
                }
            }
        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1