gpt4 book ai didi

c# - 调用父窗体函数?

转载 作者:太空宇宙 更新时间:2023-11-03 18:28:41 24 4
gpt4 key购买 nike

我有一个包含 2 个窗体的 C# 窗口程序。基本窗体 (Form1) 具有刷新 (RefreshView) View 的功能。单击按钮将调出 Form2。单击 Form2 上的“应用”按钮后,如何调用 Form1 中存在的 RefreshView 函数?两种形式都由用户打开。

Form1.cs中的Form1代码:

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

public void RefreshView()
{
//refresh code etc
}
}
}

Form2.cs 中的 Form2:

namespace MonitorCSharp
{
public partial class Form2 : Form
{
public Form2(String args)
{
InitializeComponent();
form2Text = args;
}

private void button3_Click(object sender, EventArgs e)
{
this.Close();
//I want to refresh here
}
}

我尝试了各种代码,包括:

((Form1)this.ParentForm).RefreshView();

调用刷新函数,但到目前为止一切都给我一个运行时错误。我错过了什么吗?

我没有得到任何编译错误。运行时错误是:

A first chance exception of type 'System.NullReferenceException' occurred in MonitorCSharp.exe
An unhandled exception of type 'System.NullReferenceException' occurred in MonitorCSharp.exe
Additional information: Object reference not set to an instance of an object.

最佳答案

父表单可以将事件处理程序附加到其子表单的 FormClosed 事件处理程序,以便在关闭时执行代码:

public partial class Form1 : Form
{
public void Foo()
{
Form2 child = new Form2();
child.FormClosed += (s, args) => RefreshView();
child.Show();
}

public void RefreshView()
{
//refresh code etc
}
}

关于c# - 调用父窗体函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27824553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com