我想从父窗体访问子窗体中的方法。我使用以下代码访问控件。
Form form = (Form)Application.OpenForms["frmname"];
if (tableform != null)
{
GroupBox grp = (GroupBox)tableform.Controls["grpbxname"];
Panel table = (Panel)grp.Controls["panelname"];
}
使用以下代码,我可以从父窗体访问子窗体中的控件。 我想以相同的方式访问子窗体中的函数/方法。 例如:from.newmethod();
有没有可能实现这一点,而无需创建form的新实例。它使用c#.net
的Windows应用程序感谢。
答案 0 :(得分:1)
声明一个公共方法不是一个好习惯。您可以改为创建委托或事件。您可以为该方法创建公共委托,并从类外部执行该委托。或者您可以创建可以从类外部处理的事件。
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.
}
}