C # Windows Forms: OpenFileDialog Странные проблемы - PullRequest
1 голос
/ 12 июля 2011

Это немного странно, позвольте мне попытаться объяснить это как можно лучше:

Когда я создаю новый файл и сохраняю его, он сохраняется правильно (test.xml). Когда я изменяю этот файл и сохраняю его, он сохраняется правильно (в test.xml) Когда я снова вносю изменения в этот файл или просто выбираю Сохранить как, он работает правильно (newtest.xml)

Однако, когда я открываю файл, внесите изменения в файл (test.xml) и нажмите «Сохранить», в котором он сохраняется (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 ]

2 голосов
/ 12 июля 2011
else
{
    this.ActiveDiagram.SaveSoap(this.saveEditorDialog1.FileName);

Похоже, что вы хотите:

    this.ActiveDiagram.SaveSoap(editForm.FileName);
1 голос
/ 12 июля 2011

Это должно быть связано с mainForm.openEditorDialog1.FileName.Используйте свойство FileName формы, которая выполняет сохранение.Когда вы открываете файл, присвойте fileName значение mainForm.openEditorDialog1.FileName.Когда вы сохраняете как, также устанавливаете свойство FileName.Таким образом, каждый раз, когда текущий файл изменяется, вы устанавливаете свойство FileName соответствующим образом.Затем, когда придет время сохранить файл, у вас всегда будет правильное имя файла.

В итоге, используйте только свойство .FileName диалога SaveAs или диалога FileOpen сразу после их использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...