Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 防止在每个ShowDialog上加载事件_C#_Winforms_Showdialog - Fatal编程技术网

C# 防止在每个ShowDialog上加载事件

C# 防止在每个ShowDialog上加载事件,c#,winforms,showdialog,C#,Winforms,Showdialog,父窗体只包含一个按钮“打开第二个窗体”onclick事件 private void Parent_Click(object sender, EventArgs e) { ChildForm _chld = new ChildForm(); _chld.ShowDialog(); } private void ChildForm_Load(object sender, EventArgs e) { textBox1.

父窗体只包含一个按钮“打开第二个窗体”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();
    }
子窗体包含文本框、确定按钮和确定按钮的子窗体加载、子窗体单击事件

单击“打开第二个表单”按钮,将打开文本框中包含“这是子表单”内容的子表单

这里我的场景是这样的

当我第一次点击OpenSecondForm时,它会在文本框中打开包含“这是子表单”内容的子表单。我将文本框更改为“这是父表单”,然后确定

但当我再次单击“打开第二个表单”按钮时,文本框中的文本显示的是旧文本“这是子表单”,而不是更改的文本“这是父表单”。该值未保留在文本框中


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

您每次都在创建一个新表单,因此将显示默认值。我猜您只希望显示一个子表单,因此将变量移动到父表单的作用域:

ChildForm _chld = new ChildForm();

private void Parent_Click(object sender, EventArgs e)
{
  _chld.ShowDialog();
}
确保在父窗体关闭时也处理该子窗体:

protected override void OnFormClosing(FormClosingEventArgs e) {
  _chld.Dispose();
}
Load事件仍将激发,因此只需删除您的行或将其移动到构造函数:

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