这真让我很沮丧。我是C Sharp的新手,所以寻求一些帮助。我的保存/另存为完全是fubar。
真的有两个问题:
如何在不弹出保存对话框的情况下保存对现有文件的更改?如果我单击“保存”,则会弹出一个对话框,这样就可以保存,然后进行一些更改并再次单击“保存”,弹出一个对话框,而不是仅仅将文件保存到已经给出的名称。
如何在另存为对话框中显示文件名而不是完整路径?它显示为文件名:C:\ Users \ username \ desktop \ save \ filename.xml
这是在MainForm.cs。
private void biFileSave_Click(object sender, EventArgs e)
{
// Save diagram
EditorForm editForm = this.ActiveDiagramForm;
if (editForm != null)
{
if (!editForm.HasFileName)
{
if (this.saveEditorDialog.ShowDialog(this) == DialogResult.OK)
{
this.ActiveDiagram.SaveSoap(this.saveEditorDialog.FileName);
}
}
else
{
this.ActiveDiagram.SaveSoap(this.saveEditorDialog.FileName);
}
}
private void biFileSaveAs_Click(object sender, EventArgs e)
{
// Save As diagram
EditorForm editForm = this.ActiveDiagramForm;
if (editForm != null)
{
if (editForm.HasFileName)
{
this.saveEditorDialog.FileName = editForm.FileName;
}
if (this.saveEditorDialog.ShowDialog(this) == DialogResult.OK)
{
this.ActiveDiagram.SaveSoap(this.saveEditorDialog.FileName);
string strFileName = this.saveEditorDialog.FileName;
}
}
}
这是在EditForm.cs
中 public string FileName
{
get
{
return this.fileName;
}
set
{
this.fileName = value;
this.Text = Path.GetFileNameWithoutExtension(this.fileName);
}
}
public bool HasFileName
{
get
{
return (this.fileName != null && this.fileName.Length > 0);
}
}
编辑:
感谢您如此迅速地帮助我!我的Save现在按预期工作,但是它引入了一个奇怪的问题,即Save As(上面的代码)。
如果我打开已保存的文件(test.xml),则单击“另存为”(将其命名为test2.xml),将其保存到新文件中。但是,当我再次打开test.xml并进行更改并单击“保存”时,将这些更改保存到test2.xml。很奇怪......有什么想法吗?
答案 0 :(得分:2)
代码中的哪个位置设置了FileName?从您发布的样本中,我没有看到它被设置在任何地方,但也许它在其他地方。这可能有效:
private void biFileSave_Click(object sender, EventArgs e)
{
// Save diagram
EditorForm editForm = this.ActiveDiagramForm;
if (editForm != null)
{
if (!editForm.HasFileName)
{
if (this.saveEditorDialog.ShowDialog(this) == DialogResult.OK)
{
this.ActiveDiagram.SaveSoap(this.saveEditorDialog.FileName);
editForm.FileName = this.saveEditorDialog.FileName;
}
}
else
{
this.ActiveDiagram.SaveSoap(this.saveEditorDialog.FileName);
}
}
答案 1 :(得分:1)
1)保存dialog box
将只返回用户希望保存的文件路径。使用此路径,您可以执行保存功能。如果要保存到当前文档,只需跳过对话框并使用所选路径的缓存版本执行保存功能。
例如,在您的表单中,有一个变量:
string currentFilePath = "";
当用户首次打开“保存”对话框时,请使用用户选择的路径填充该变量。
下次用户保存(而不是save as
)时,请执行检查:
if(!String.IsNullOrEmpty(currentFilePath))
//save method using currentFilePath as the path to save to
2)您需要在某处设置FileName
。然后,您可以使用FileName
上的Path.GetFileName来获取名称和扩展名。