如果没有输入,只询问文件名
Only ask for filename if one has not been input
我正在使用 C# 和 winform,并在按钮单击事件中将数据保存到 .xlsx。我有一个独特的情况,我不确定如何编码......
如果表单仍然显示并且用户单击按钮,我希望它提示输入文件名和保存位置。 但是 如果表单尚未关闭并且用户再次单击该按钮,我希望将 .xlsx 保存在同一位置并使用相同的文件名并在没有提示的情况下覆盖.
这是我用来提示输入保存名称和位置的语法,但是我如何检查以确定是否已经输入了 filename/save 位置,如果已经输入则不再提示?
private void btnOne_Click(object sender, EventArgs e)
{
SaveFileDialog save = new SaveFileDialog();
save.InitialDirectory = @"C:\";
save.RestoreDirectory = true;
save.Title = "Select save location file name";
save.DefaultExt = "xlsx";
if (save.ShowDialog() == DialogResult.OK)
{
try
{
var file = new FileInfo(save.FileName);
using (var package = new ExcelPackage(file))
{
package.Save();
}
}
catch { Messagebox.Show("An error has occured"; }
}
}
全局声明:
public string Filename;
然后像这样更改您的子例程:
private void btnOne_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(Filename))
{
SaveFileDialog save = new SaveFileDialog();
save.InitialDirectory = @"C:\";
save.RestoreDirectory = true;
save.Title = "Select save location file name";
save.DefaultExt = "xlsx";
if (save.ShowDialog() == DialogResult.OK)
{
try
{
Filename = save.FileName;
var file = new FileInfo(save.FileName);
using (var package = new ExcelPackage(file))
{
package.Save();
}
}
catch { MessageBox.Show("An error has occured"); }
}
}
else
{
var file = new FileInfo(Filename);
using (var package = new ExcelPackage(file))
{
package.Save();
}
}
}
因此,数据是否具有设置的文件名是 class 状态的一部分。在你有 btnOne_Click
的 class 中,只需定义一个带有文件名的字符串,默认为空:
string filepath = null;
然后,您要在 btnOne_Click
中检查文件路径。如果不存在,请打开另存为对话框。之后,如果设置了文件路径,只需保存即可。它将像这样重组:
private void btnOne_Click(object sender, EventArgs e)
{
if (filepath == null)
{
SaveFileDialog save = new SaveFileDialog();
save.InitialDirectory = @"C:\";
save.RestoreDirectory = true;
save.Title = "Select save location file name";
save.DefaultExt = "xlsx";
if (save.ShowDialog() == DialogResult.OK) {
filepath = save.FileName;
}
}
if (filepath != null)
{
try
{
var file = new FileInfo(filepath);
using (var package = new ExcelPackage(file))
{
package.Save();
}
}
catch { MessageBox.Show("An error has occured"; }
}
}
此逻辑结构为您提供了用户按下保存按钮时的标准行为。如果他们取消另存为对话框,则保存将中止并且文件名状态不会更改。
我正在使用 C# 和 winform,并在按钮单击事件中将数据保存到 .xlsx。我有一个独特的情况,我不确定如何编码...... 如果表单仍然显示并且用户单击按钮,我希望它提示输入文件名和保存位置。 但是 如果表单尚未关闭并且用户再次单击该按钮,我希望将 .xlsx 保存在同一位置并使用相同的文件名并在没有提示的情况下覆盖.
这是我用来提示输入保存名称和位置的语法,但是我如何检查以确定是否已经输入了 filename/save 位置,如果已经输入则不再提示?
private void btnOne_Click(object sender, EventArgs e)
{
SaveFileDialog save = new SaveFileDialog();
save.InitialDirectory = @"C:\";
save.RestoreDirectory = true;
save.Title = "Select save location file name";
save.DefaultExt = "xlsx";
if (save.ShowDialog() == DialogResult.OK)
{
try
{
var file = new FileInfo(save.FileName);
using (var package = new ExcelPackage(file))
{
package.Save();
}
}
catch { Messagebox.Show("An error has occured"; }
}
}
全局声明:
public string Filename;
然后像这样更改您的子例程:
private void btnOne_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(Filename))
{
SaveFileDialog save = new SaveFileDialog();
save.InitialDirectory = @"C:\";
save.RestoreDirectory = true;
save.Title = "Select save location file name";
save.DefaultExt = "xlsx";
if (save.ShowDialog() == DialogResult.OK)
{
try
{
Filename = save.FileName;
var file = new FileInfo(save.FileName);
using (var package = new ExcelPackage(file))
{
package.Save();
}
}
catch { MessageBox.Show("An error has occured"); }
}
}
else
{
var file = new FileInfo(Filename);
using (var package = new ExcelPackage(file))
{
package.Save();
}
}
}
因此,数据是否具有设置的文件名是 class 状态的一部分。在你有 btnOne_Click
的 class 中,只需定义一个带有文件名的字符串,默认为空:
string filepath = null;
然后,您要在 btnOne_Click
中检查文件路径。如果不存在,请打开另存为对话框。之后,如果设置了文件路径,只需保存即可。它将像这样重组:
private void btnOne_Click(object sender, EventArgs e)
{
if (filepath == null)
{
SaveFileDialog save = new SaveFileDialog();
save.InitialDirectory = @"C:\";
save.RestoreDirectory = true;
save.Title = "Select save location file name";
save.DefaultExt = "xlsx";
if (save.ShowDialog() == DialogResult.OK) {
filepath = save.FileName;
}
}
if (filepath != null)
{
try
{
var file = new FileInfo(filepath);
using (var package = new ExcelPackage(file))
{
package.Save();
}
}
catch { MessageBox.Show("An error has occured"; }
}
}
此逻辑结构为您提供了用户按下保存按钮时的标准行为。如果他们取消另存为对话框,则保存将中止并且文件名状态不会更改。