欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# Winform 子窗体访问父级窗体的控件和属性

程序员文章站 2023-11-14 20:38:22
今天在做一个联系人管理的c#设计时,遇到了这个问题,我需要将父窗体中的textbox中的值传到子窗体并进行数据库查询操作,我用了new 父窗体().textbox.text...

今天在做一个联系人管理的c#设计时,遇到了这个问题,我需要将父窗体中的textbox中的值传到子窗体并进行数据库查询操作,我用了new 父窗体().textbox.text;来进行值传递,然而并无卵用,经过多次试验,找到了一个比较简单的解决方法:

一、子窗体调用父窗体的静态变量

父窗体:logout

子窗体:affirm

父窗体文本框:tb_logout_username

public partial class logout : form
{

  //定义一个静态变量存放父窗体中的文本框的值

  public static string tb_logoutname;

  //实例化子窗体的事件

  private void btt_logout_click(object sender, eventargs e)
  {

    //获取父窗体中的文本框的值

    tb_logoutname = tb_logout_username.text;
    affirm aff = new affirm();
    aff.show();

  }

}

接下来要在子窗体中调用就可以直接:父窗体.变量

即:logout.tb_logoutname

这个方法显得比较取巧,按理说应该先找到获取父窗体的方法,然后再对其进行操作。

二、将父窗体作为属性传递给子窗体

在你的子窗体中定义public 的父窗体字段,如:

public class affirm:form
{
  public logout mylogout;
}

然后在父窗体设置其值即可,如:

public partial class logout : form
{
 
  //定义一个静态变量存放父窗体中的文本框的值
 
  public static string tb_logoutname;
 
  //实例化子窗体的事件
 
  private void btt_logout_click(object sender, eventargs e)
  {
 
    //获取父窗体中的文本框的值
 
    //tb_logoutname = tb_logout_username.text;
    affirm aff = new affirm();
    aff.mylogout=this;
    aff.show();
 
  }
 
}

这样,父窗体中公开的成员你都可以在子窗体中访问,使用。