莫代尔形式问题中的模态形式

时间:2014-08-14 00:15:49

标签: c# modal-dialog

我的主表单中的一个按钮执行以下操作:

 private void buttonGabarito_Click(object sender, EventArgs e)
        {
            FormGabarito fg = (FormGabarito)Application.OpenForms["FormGabarito"];

            if (fg == null)
            {
               fg = new FormGabarito(this);
            }

            fg.ShowDialog();
        }

然后,在我的“FormGabarito”中有一个“saveButton”

    private void buttonExport_Click(object sender, EventArgs e)
    {
        var fb = new SaveFileDialog();
        fb.Filter = "xml file (*.xml) | *.xml";
        var res = fb.ShowDialog();

        if (fb.FileName != null)
        {
            Manager.DtGabarito.WriteXml(fb.FileName);
            UpdateAll();
        }
    }

我的问题是:当我关闭SaveFileDialog时,无论是选择路径还是点击取消,我的FormGabarito也会关闭!我的主要表格,哈哈。

我添加了以下行

this.DialogResult = DialogResult.None;

var res = fb.ShowDialog();

现在只有在单击SaveFileDialog中的取消按钮时才会出现此问题。 为什么会这样?我该如何解决呢?

1 个答案:

答案 0 :(得分:0)

我尝试使用类似的代码重新创建问题,但它可以正常运行。

我的猜测是必须使用以下代码导致错误(权限或其他内容),

//Manager.DtGabarito.WriteXml(fb.FileName);
//UpdateAll();  

工作代码:

   public partial class Form1 : Form
   {
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 fg = (Form2)Application.OpenForms["Form2"];

        if (fg == null)
        {
            fg = new Form2();
        }

        fg.ShowDialog();
    }
  }



 public partial class Form2 : Form
 {

    public Form2()
    {
        InitializeComponent();
    }      

    private void button1_Click(object sender, EventArgs e)
    {
        var fb = new SaveFileDialog();
        fb.Filter = "xml file (*.xml) | *.xml";
        var res = fb.ShowDialog();            
        if (fb.FileName != null)
        {
            MessageBox.Show(fb.FileName);
            //Manager.DtGabarito.WriteXml(fb.FileName);
            //UpdateAll();
        }
    }       
}