将文件加载到richtextbox中

时间:2012-10-19 17:24:05

标签: c#

现在我的代码设置为当单击此按钮时,它会打开一个选择文件对话框,并允许此人选择要打开的文件。

private void button1_Click(object sender, System.EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.RichText);
            }
        }

然而 - 我已经改变了我的程序,以便程序只输出一个默认文件 -

public void CreateInventory(CreateInventory createinventory)
{
    try
    {
        FileStream fileStream = new FileStream
        ("CreateInventory.bin", FileMode.Create,
        FileAccess.Write);
        IFormatter formatter = new BinaryFormatter();
        formatter.Serialize(fileStream, createinventory);
        fileStream.Close();
    }
    catch (ItemNotFoundException)
    {
        throw new ItemNotFoundException("Output not created - see logs");
    }
}

如何切换按钮以便直接加载该文件,而不是要求用户选择要加载的文件?

1 个答案:

答案 0 :(得分:0)

我不完全明白你的问题是什么,请告诉我更多关于你想做什么的事。

但我建议您更改代码:

public void CreateInventory(CreateInventory createinventory)
    {
        try
        {
            using (FileStream fileStream = new FileStream("CreateInventory.bin", FileMode.Create, FileAccess.Write))
            {
                IFormatter formatter = new BinaryFormatter();
                formatter.Serialize(fileStream, createinventory);
            }
        }
        catch (Exception ex)
        {
            throw new ItemNotFoundException("Output not created - see logs", ex);
        }
    }
  1. 您不应该捕获异常并重新抛出相同的异常 - 您丢失了宝贵的信息(例如堆栈跟踪)。如果在调用者的视图中异常不正确,您可以将其包装起来,就像我在上面的代码中一样。

  2. 在using语句中放置一次性(实现IDisposable)类的类非常重要。

  3. 为什么要使用'使用'?

    一次性类包含非托管资源(在本例中为文件句柄),并且不会像托管资源一样发布它们。完成后应该释放。使用还有另一个好处:即使范围结束或发生异常,它也会为您调用Dispose()。该文件已发布,其他进程可以访问该文件..