防止每个ShowDialog上的Load事件

时间:2014-08-05 19:37:25

标签: c# winforms showdialog

ParentForm只包含一个按钮" Open Second Form"它调用的onclick事件

private void Parent_Click(object sender, EventArgs e)
    {
        ChildForm _chld = new ChildForm();
        _chld.ShowDialog();
    }





private void ChildForm_Load(object sender, EventArgs e)
    {
        textBox1.Text = "This is Child Form";
    }

    private void Ok_Click(object sender, EventArgs e)
    {
        this.Hide();
    }

子窗体包含文本框,Ok按钮和ChildForm_Load,OK按钮的Child_Click事件。

点击"打开第二张表格"按钮它打开包含内容的儿童表格"这是儿童表格"在文本框中。

我的情况就是这样,

当我第一次点击OpenSecondForm时,它会打开包含内容&#34的ChildForm;这是Child形式"在文本框中。我将文本框更改为"这是父表单"然后确定。

但是,当我再次点击"打开第二表格"按钮文本框中的文本显示旧文本"这是子表格"但没有改变文字"这是父表格"。该值不会保留在文本框中。

我认为每个showdialog()都会触发Load事件。有没有办法第二次阻止加载事件。

1 个答案:

答案 0 :(得分:1)

您每次都在创建新表单,因此会显示默认值。我猜你只想要一个ChildForm显示,所以将变量移动到父窗体的范围:

ChildForm _chld = new ChildForm();

private void Parent_Click(object sender, EventArgs e)
{
  _chld.ShowDialog();
}

当父母关闭时,请务必处置该ChildForm:

protected override void OnFormClosing(FormClosingEventArgs e) {
  _chld.Dispose();
}

Load事件仍然会触发,所以只需删除你的行或将其移动到构造函数:

public ChildForm() {
  this.InitializeComponent();
  this.textBox1.Text = "This is Child Form";
}