我毫不怀疑这些问题具有非常基本的性质,但对我来说这很难...... 我想用saveFileDialog选择文件名/路径。 像这样:
private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
{
// Get file name.
string name = saveFileDialog1.FileName;
来源:http://www.dotnetperls.com/savefiledialog
然后我想用上面的Path声明StreamWriter(假设这样工作)
System.IO.StreamWriter file = new System.IO.StreamWriter(saveFileDialog1_FileOk.FileName);
这必须在saveFileDialog1_FileOk函数中完成。然后我想从另一个函数/事件处理程序(SerialPort已收到数据)写入该文件。并且文件名应该能够在运行时更改为新文件,以便来自事件处理程序的数据 被写入另一个文件。
但是从其他功能来看,我无法访问StreamWriter并且我不知道如何更改文件。
此外,我想知道如何在运行时使文件中的数据可访问。在我的第一次测试中,当我调用
时,它总是被写入文件file.Close()
b 那我就不能再打开了。
如果有人能建议我走的路,那将是一个很大的帮助......
答案 0 :(得分:0)
如果我理解你的问题;你选择的方法似乎违反了单一责任原则,除了引起你所有这些问题。
您应该考虑做的是创建一个管理流的静态实例的类,并从打开的对话框和串口事件中使用它 让我们调用流管理类 StreamManager 。它将具有以下代码的实现模拟器
public class StreamManager
{
private static StreamWriter file = null;
public void NewFile(string filePath)
{
this.close();
file = new StreamWriter(filePath);
}
public void WriteToFile(string yourData)
{
file.Write(yourData);
}
public void close()
{
if (file != null /* and if not already been closed*/)
{
file.Flush();
file.Close();
}
}
}
现在,您可以从new StreamManager().NewFile(fileName)
打开对话框和new StreamManager ().WriteToFile(…)
来自串口。
请注意我没有测试上面的代码,仅作为指南提供。您应该为所有方法添加更多状态/错误管理
干杯