从父窗体访问打开窗体上的方法
本文关键字:窗体 开窗 方法 访问 | 更新日期: 2023-09-27 18:12:57
我想从父窗体访问子窗体中的方法。我使用了下面的代码来访问控件。
Form form = (Form)Application.OpenForms["frmname"];
if (tableform != null)
{
GroupBox grp = (GroupBox)tableform.Controls["grpbxname"];
Panel table = (Panel)grp.Controls["panelname"];
}
使用下面的代码,我可以从父窗体访问子窗体中的控件。我想以同样的方式访问子窗体中的函数/方法。
from.newmethod();是否有可能实现这一点,而不创建新的窗体实例。windows应用程序使用c#.net
谢谢。
将方法声明为public并不是一个好的做法。您可以创建委托或事件。你可以为那个方法创建公共委托,并从类的外部执行那个委托,或者你可以创建可以从类的外部处理的事件。
public partial class Form1 : Form
{
public delegate void dMyFunction(string param);
public dMyFunction delMyFunction;
public Form1()
{
InitializeComponent();
delMyFunction = new dMyFunction(this.MyFunction);
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.Show();
}
private void MyFunction(string param)
{
this.Text = param;
}
}
现在,你可以从类的外部调用这个委托
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
Form1 frm = (Form1)Application.OpenForms["Form1"];
frm.delMyFunction.Invoke("Hello");
//On Form load this method will be invoked and Form1 title will be changed.
}
}