C#Windows窗体:OpenFileDialog奇怪的问题

时间:2011-07-12 00:40:22

标签: c# winforms

这有点奇怪,让我尽量解释一下:

当我创建一个新文件并保存它时,它会正确保存(test.xml)。 当我对此文件进行更改并保存时,它会正确保存(到test.xml) 当我再次对此文件进行更改或只选择“另存为”时,它可以正常工作(newtest.xml)

但是,当我打开文件时,请对文件(test.xml)进行更改,然后单击Save it is saving to(newtest.xml)。

这是在我的MainForm.cs

            if (this.openEditorDialog1.ShowDialog(this) == DialogResult.OK && editForm != null)
        {


            editForm.Close();                
            editForm = new EditorForm(this);
            editForm.OpenFile(this.openEditorDialog1.FileName);
            editForm.Closing += new CancelEventHandler(EditorForm_Closing);
            editForm.MdiParent = this;
            editForm.Show();
        }

private void biFileSave_Click(object sender, EventArgs e)
{
if (!editForm.HasFileName)
            {
                if (this.saveEditorDialog1.ShowDialog(this) == DialogResult.OK)
                {
                    this.ActiveDiagram.SaveSoap(this.saveEditorDialog1.FileName);
                    editForm.FileName = this.saveEditorDialog1.FileName;
                }
            }
            else
            {
                this.ActiveDiagram.SaveSoap(this.saveEditorDialog1.FileName);
            }

这是在我的EditorForm.cs

  public void OpenFile(string strFileName)
    {

        diagramComponent.LoadSoap(mainForm.openEditorDialog1.FileName);
        this.FileName = mainForm.openEditorDialog1.FileName;
        this.tabControl1.SelectedTab = DiagramTab;

    }

我确定它与我在EditoForm中所做的事情有关,但我似乎无法弄明白。

2 个答案:

答案 0 :(得分:2)

else
{
    this.ActiveDiagram.SaveSoap(this.saveEditorDialog1.FileName);

看起来你想要:

    this.ActiveDiagram.SaveSoap(editForm.FileName);

答案 1 :(得分:1)

必须与mainForm.openEditorDialog1.FileName有关。使用执行保存的表单的FileName属性。打开文件时,将fileName设置为mainForm.openEditorDialog1.FileName。当您保存时,也可以在那里设置FileName属性。这样,每当更改当前文件时,都会适当地设置FileName属性。然后,当需要保存文件时,您始终拥有正确的文件名。

总之,只能在使用后立即使用SaveAs对话框的.FileName属性或FileOpen对话框。