我正在使用C#和winform,并在按钮点击事件中将数据保存到.xlsx。我有一个独特的情况,我不知道如何编码.... 如果仍然显示表单并且用户单击该按钮,我希望它提示输入文件名并保存位置。 但如果表单尚未关闭且用户第二次点击该按钮,我希望将.xlsx保存在同一位置并使用相同的文件名并在没有提示的情况下写入。
这是我用来提示保存名称和位置的语法,但是如何检查以确定是否已经输入了文件名/保存位置以及它是否再次没有提示?
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"; }
}
}
答案 0 :(得分:3)
因此,数据是否具有设置文件名是该类状态的一部分。在你有btnOne_Click
的类中,只需用文件名定义一个字符串,默认为null:
string filepath = null;
然后,在btnOne_Click
中,您要检查文件路径。如果不存在,请打开saveAs对话框。之后,如果设置了filepath,则只需保存。它会像这样重组:
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"; }
}
}
此逻辑结构为您提供用户按下保存按钮时的标准行为。如果它们取消了saveAs对话框,则中止保存并且不更改文件名状态。
答案 1 :(得分:0)
全球宣布:
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();
}
}
}