我正在使用c#.net windows form应用程序。 我必须在defaultsetting.xml文件中保存少量输入,但如果存在具有相同文件名“defaultsetting.xml”的无效文件,我应该在状态栏中显示msg ..我该怎么做?
答案 0 :(得分:4)
问问自己:用户需要知道文件无法保存吗?
如果否,则通过覆盖文件来处理它们的情况。由于用户界面摩擦/垃圾邮件较少,它将创造更好的体验。
示例A
if (File.Exists(path))
File.Delete(path);
Save("defaultsettings.xml");
如果是,请检查文件是否存在,并通过显示MessageBox
或更改应用StatusStrip
上的文字标签来通知用户。
示例B
if (File.Exists(path))
this.m_StatusBarLabel.Text = "Error: Could not write to file: \"" + path + "\"";
else
Save("defaultsettings.xml");
m_StatusBarLabel
是您添加到状态条控件的ToolStripStatusLabel
。使用Visual Studio中的设计器一起创建它(这很简单)。
提示:如果用户需要执行某些操作,请将文本设为HyperLink或添加Click事件。
HTH,
答案 1 :(得分:2)
请勿使用File.Exists
!
绝不使用File.Exists
,始终会引入竞争条件。
相反,使用“仅创建”选项以写入模式打开文件,如果文件已存在则处理异常(以及其他错误,例如无权在该目录中写入,网络共享断开连接等。)
答案 2 :(得分:0)
您可以使用File.Exists(路径)检查文件是否存在,然后显示您的消息。
答案 3 :(得分:0)
您的意思是StatusStrip吗?
只需将ToolStripStatusLabel添加到StatusStrip并设置标签的Text属性。
要检查文件是否存在,请使用System.IO.File.Exists(filepath)。
答案 4 :(得分:0)
if (System.IO.File.Exists(@"C:\defaultsettings.xml"))
{
statusbar1.Text = "Default Settings already exists";
}
或者你可以使用它:
StreamWriter sw = null;
try
{
sw = new StreamWriter((Stream)File.Open(@"C:\DefaultSettings.txt", FileMode.CreateNew));
sw.WriteLine("Test");
}
catch (IOException ex)
{
if (ex.Message.Contains("already exists"))
{
statusbar1.Text = "File already exists";
}
else
{
MessageBox.Show(ex.ToString());
}
}
finally
{
if (sw != null)
{ sw.Close(); }
}