0

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

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");
    }
}

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

4

1 回答 1

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. IDisposable将一次性(实现的类)类放在 using 语句中非常重要。

为什么要使用“使用”?

一次性类包含非托管资源(在本例中为文件句柄),它们不像托管资源那样被释放。当你完成它时,你应该释放它。Dispose()using 有另一个优点:即使范围结束或发生异常,它也会调用您。该文件被释放,其他进程可能可以访问该文件..

于 2012-10-19T17:56:34.337 回答