Как сохранить файл в fastcoloredtextbox?

Я разрабатываю редактор синтаксиса в C#, где вы можете написать код в компоненте FastColoredTextBox, а затем сохранить его в виде файла.html. Тем не менее, у меня есть код для Save As вариант. Единственная проблема у меня, когда пользователь сохраняет файл.html, то же самое Save As диалоговое окно выскакивает. Но мы уже сохранили это раньше. Я хочу просто нажать Ctrl+Sна клавиатуре, и он автоматически сохранит изменения файла после сохранения в виде файла.html, конечно.

Вот код, который у меня есть для Save As вариант.

private void toolStripButton2_Click(object sender, EventArgs e)
{
    SaveFileDialog sfd = default(SaveFileDialog);
    if (FastColoredTextBox1.Text.Length > 0)
    {
        sfd = new SaveFileDialog();
        sfd.Filter = "HTML Files|.html|" + "All Files|*.*";

        sfd.DefaultExt = "html";

        sfd.ShowDialog();


        string location = null;
        string sourcecode = FastColoredTextBox1.Text;
        location = sfd.FileName;
        if (!object.ReferenceEquals(sfd.FileName, ""))
        {
            using (System.IO.StreamWriter writer = new System.IO.StreamWriter(location, false))
            {
                writer.Write(sourcecode);
                writer.Dispose();
            }
        }
    }
    if (Directory.Exists(sfd.FileName) == true)
    {
        string location = sfd.InitialDirectory;
        File.WriteAllText(location, (FastColoredTextBox1.Text));
    }
}

Может ли кто-нибудь помочь мне достичь этого? Пожалуйста помоги.

1 ответ

Решение

Вы должны сделать то, что другие предложили сохранить его как текстовый файл с расширением.html, но я здесь, чтобы ответить на ваши вопросы. ctrl + s вопрос. Это предполагает, что вы используете winform (потому что вы еще не указали):

yourForm.KeyPreview = true;
yourForm.KeyDown += new KeyEventHandler(Form_KeyDown);

и ваш обработчик должен выглядеть примерно так:

    void Form_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Control && e.KeyCode == Keys.S)
        {
            string sourceCode = FastColoredTextBox1.Text;
            // not sure what's going on for you "location" but you need to do that logic here too
            File.WriteAllText(location, sourceCode);
            e.SuppressKeyPress = true;
        }
    }

Надеюсь, что это помогает бутон

Другие вопросы по тегам