如何将文件保存在 fastcoloredtextbox 中?

Posted

技术标签:

【中文标题】如何将文件保存在 fastcoloredtextbox 中?【英文标题】:How do i save a file in fastcoloredtextbox? 【发布时间】:2017-08-02 13:45:03 【问题描述】:

我正在用 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));
    

谁能帮我实现这个目标?请帮忙。

【问题讨论】:

如果要保存,不要使用SaveFileDialog,使用File.WriteAllText即可。 连同@Will 的建议,如果你希望它绑定到 control+s,你需要在你的表单上有一个 Key_Down 事件处理程序(假设这是 winforms)。然后,您需要检查它是否已保存,只需使用 File.WriteAllText,或者如果尚未保存,则启动 SaveFileDialog。编辑:我现在看到这是在工具条按钮上单击。您可以使用按钮的属性来绑定到 ctrl+s,而不是使用 Key_Down 事件。其他一切都保持不变。 你能指定这是否是winforms吗?也请考虑尽你所能以良好的语法方式提出你的问题。看到语法很差的问题可能会让一些用户觉得你并没有真正投入到这个问题中。 这就是从互联网上复制代码不理解的问题......只要第一次存储文件名,如果'ts set,不显示对话框。 【参考方案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;
        
    

希望对你有所帮助

【讨论】:

以上是关于如何将文件保存在 fastcoloredtextbox 中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将TXT文件保存为HTML

如何将文件保存在 fastcoloredtextbox 中?

tinyfiledialogs如何将文件保存在俄语命名文件夹中

Matlab中,如何将所写的文件保存到一个指定文件夹里?

如何将用户获取的文件路径保存在Json文件中?

如何将数据保存在json文件中?