Как задать правильное сохранение и открытие файла текста из программы и из Windows?

Рейтинг: 0Ответов: 1Опубликовано: 18.07.2023

Я повторил сохранение файла с форматированием как в ответе https://ru.stackoverflow.com/a/678502/549706 и по такой же схеме переделал код и для кнопки открытия. Все работает. Только вот хотелось бы, чтобы файл открывался не только, если я открою файл через кнопку "Открыть" в программе, а еще и ПКМ по файлу -> Открыть с помощью ->Моя программа. И еще подскажите пожалуйста, как реализовать кнопку Сохранить как , чтобы допустим, если я пропишу file.rtf , то оно сохраняло форматирование, а если укажу там file.txt или file.ini , чтобы оно сохраняло в файлах только текстовые данные, по типу как в стандартном Блокноте?

Ответы

▲ 1

1. Выбор Вашей программы в контекстном меню "Открыть с помощью"

Для начала нужно собраь exe приложение.
Откройте меню "Сборка" в Visual Studio и выберите "Создать проект <Название вашего проекта>.exe" -> Появится окно "Сохранить как" -> Нажмите кнопку "Сохранить".

Теперь можно выбрать путь до Вашей программы в контекстном меню.

2. Реализация кнопки "Сохранить как"

Вот пример кода.

using System.IO; // Для использования класса Path

// Обработчик кнопки "Сохранить как"
private void btnSaveAs_Click(object sender, EventArgs e)
{
    // Открытие диалога для сохранения файла
    SaveFileDialog saveFileDialog = new SaveFileDialog();
    // Установка возможных форматов (rtf, txt, ini, можете добавить свои)
    saveFileDialog.Filter = "RTF Files (*.rtf)|*.rtf|Text Files (*.txt)|*.txt|INI Files (*.ini)|*.ini";
    if (saveFileDialog.ShowDialog() == DialogResult.OK)
    {
        string fileName = saveFileDialog.FileName;
        string fileExtension = Path.GetExtension(fileName).ToLower();
        
        // Обработка расширений
        if (fileExtension == ".rtf")
        {
            // Сохранение в формате RTF
            richTextBox1.SaveFile(fileName, RichTextBoxStreamType.RichText);
        }
        else if (fileExtension == ".txt")
        {
            // Сохранение в формате TXT
            richTextBox1.SaveFile(fileName, RichTextBoxStreamType.PlainText);
        }
        else if (fileExtension == ".ini")
        {
            // Сохранение в формате INI
            // ...
        }
    }
}

Ссылка на документацию метода RichTextBox.SaveFile -> https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.richtextbox.savefile?view=windowsdesktop-7.0