rafamont
@rafamont
Junior BackEnd

Пишу текстовый редактор. Что не так? Как решить проблему с сохранением файла?

Здравствуйте,пишу текстовый редактор. Никак не получается сделать 2штуки:
1). - Сделал "сохранить как",но не знаю как сделать чтобы сохраняло без окна о пути к документу
2). - Не знаю как сделать,чтобы при закрытии программы,если файл был сохранен появлялся месседж-бокс с просьбой сохранить(ну как в notepad в windows)
Вот сам код. Поможете?
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.IO;
using System.Windows.Forms;

namespace Notepade_by_rafamont
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void richTextBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.Text = "Текстовый редактор by rafamont";
            openFileDialog1.FileName = @"C:\Users\rafamont\Desktop";
            openFileDialog1.Filter = "Текстовые файлы (*.txt)|*.txt|All files(*.*)|*.*";
            saveFileDialog1.Filter = "Текстовые файлы (*.txt)|*.txt|All files(*.*)|*.*";
        }

        private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            openFileDialog1.ShowDialog();
            if (openFileDialog1.FileName == String.Empty) return;
            // Читаєм файл + coding 1251
            try
            {
                var Reader = new System.IO.StreamReader(openFileDialog1.FileName, Encoding.GetEncoding(1251));
                richTextBox1.Text = Reader.ReadToEnd();
            }
            catch(FileNotFoundException Sit1)
            {
                MessageBox.Show(Sit1.Message + "\n Такого файла не существует!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch(Exception Sit1)
            {
                MessageBox.Show(Sit1.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

        private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }

        private void сохранитьКакToolStripMenuItem_Click(object sender, EventArgs e)
        {
            saveFileDialog1.FileName = openFileDialog1.FileName;
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                Save1();
            }
        }


        private void Save1()
        {
            try
            {
                var Writer = new StreamWriter(saveFileDialog1.FileName, false, Encoding.GetEncoding(1251));
                Writer.Write(richTextBox1.Text);
                Writer.Close();
                richTextBox1.Modified = false;
            }
            catch (Exception Sit1)
            {
                MessageBox.Show(Sit1.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }

        }

        private void выходToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void Form1_FormClosing (object sender, FormClosedEventArgs e)
        {
            if (richTextBox1.Modified == true)
            {
                var MesaBox = MessageBox.Show("Текст документа был изменен!", "Желаете ли вы сохранить изменения ?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation);
                if (MesaBox == DialogResult.No) return;

                if (MesaBox == DialogResult.Yes)
                {
                    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                    {
                        Save1();
                        return;
                    }
                }
            }
            else
            {
                return;
            }
        }
    }
}
  • Вопрос задан
  • 187 просмотров
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
С шарпом не знаком, но в принципе:
1.Ты же сам выводишь диалог сохранения, просто оставь вызов Save1() остальное убери.
2.Form1_FormClosing не срабатывает? Поставь там точку останова и запусти под отладчиком, посмотри почему не отрабатывает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы