现在我的代码设置为当单击此按钮时,它会打开一个选择文件对话框,并允许此人选择要打开的文件。
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");
}
}
如何切换按钮以便直接加载该文件,而不是要求用户选择要加载的文件?
答案 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);
}
}
您不应该捕获异常并重新抛出相同的异常 - 您丢失了宝贵的信息(例如堆栈跟踪)。如果在调用者的视图中异常不正确,您可以将其包装起来,就像我在上面的代码中一样。
在using语句中放置一次性(实现IDisposable
)类的类非常重要。
为什么要使用'使用'?
一次性类包含非托管资源(在本例中为文件句柄),并且不会像托管资源一样发布它们。完成后应该释放。使用还有另一个好处:即使范围结束或发生异常,它也会为您调用Dispose()
。该文件已发布,其他进程可以访问该文件..