从RichtextBox LoadFile方法发布文件

时间:2013-05-08 13:54:23

标签: c# file-io richtextbox

所以,我在表单的开头加载一个文件。我在该表单中有“保存按钮”。当我单击它时,我想用richtextbox.Savefile方法覆盖该文件。但我得到“访问路径..被拒绝”

我检查了一下:

  1. 当前用户的权限全部授予
  2. 调试文件夹具有“只读” - 试图删除,但它们总是回来
  3. 现在,我认为只有在我关闭表单

    时,程序才会释放资源(文件)

    有什么方法可以强迫这个吗? (我认为文件仍然加载到RAM内存中)

    还有一件事:我必须使用SaveFile和LoadFile方法。我正在使用RTF文件,我的代码使得这些方法做得最好。

        public EditareArticol(string path,List<capitol>chapters,Object[,]lca)
        {
            this.richTextBoxEx1.LoadFile(path, RichTextBoxStreamType.RichText);
        }
    
        private void saveToolStripButton_Click(object sender, EventArgs e)
        {
            richTextBoxEx1.SaveFile("articles\\" + 
                                    textBox1.Text + ".dat",
                                    RichTextBoxStreamType.RichText);  
    File.SetAttributes("articles\\" + textBox1.Text + ".dat", File.GetAttributes("articles\\" + textBox1.Text + ".dat") | FileAttributes.Hidden);        
        }
    

    修改

    我认为这是关于特定文件句柄的全部内容 来自MSDN文档:

      

    在为RichTextBox创建句柄之前,LoadFile方法不会打开文件。确保在调用LoadFile方法之前创建了控件的句柄。

2 个答案:

答案 0 :(得分:0)

问题已解决: 该程序没有让我覆盖文件,因为他们有HIDDEN属性
一旦我删除了它,所有开始工作都很好。
谢谢你的帮助

答案 1 :(得分:0)

我遇到了同样的问题(第一次写入文件,然后加载,但是第二次没有保存)。我的解决方案是使用ReadAlltext而不是LoadFile。我知道这是一个老问题,但是我花了很多时间寻找解决方案,却找不到明确的答案。我不了解技术知识,但它对我有用,并且可能对其他人有用。

我的解决方案:

string path = "whatever...."

// TO SAVE / OVERWRITE :

 richTextBox1.SaveFile(path, RichTextBoxStreamType.PlainText);

// TO LOAD:

richTextBox1.Text= File.ReadAllText(path);

如果您遇到诸如ÁÉÕã这样的特殊字母的问题,则可以为加载方法指定Unicode代码,例如:

richTextBox1.Text= File.ReadAllText(path, Encoding.UTF7);

有效选项包括UTF7,UTF8,ASCII,默认,UTF32,Unicode。