从父表单访问打开表单上的方法c#

时间:2014-07-14 05:18:04

标签: c# .net winforms

我想从父窗体访问子窗体中的方法。我使用以下代码访问控件。

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应用程序

感谢。

1 个答案:

答案 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.
    }
}