winform实现B窗体刷新A窗体(子窗体刷新父窗体)

前言

最近博主在做项目的时候遇到需要实现A窗体刷新B窗体的功能,比如从A窗体中点击登录按钮弹出B窗体的登录界面,如果用户登录成功则自动关闭B窗体,A窗体显示用户昵称;当用户关闭登录界面时,什么都不改变。

效果流程

  1. 在A窗体中当用户点击登录,弹出B窗体登录界面,如果登录成功,则把A窗体用户名改成用户在B窗体输入的用户名

  2. 用户输入账户后,把账户传到A窗体中

解决方案

实现窗体间的传值

  1. 重载A窗体中的构造方法,并定义一个string类型的全局变量,注意:必须加static关键字,否则不能传值

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    //系统自动生成的构造函数
    public Form1()
    {
    InitializeComponent();
    }
    //定义一个string类型的全局变量
    private static string UserName = "";
    //重载构造函数,设置一个string类型的形参,用来接收从B窗体传来的值
    public Form1(string str)
    {
    //把传过来的参数赋值给UserName
    UserName = str;
    }
  2. 在A窗体中定义一个方法,把要刷新的部分写到这个方法里面

    1
    2
    3
    4
    5
    public void ShuaXin()
    {
    //吧用户名标签文本改成用户传过来的值
    label1.Text = UserName;
    }
  3. 在A窗体里点击触发B窗体的按钮里的代码如下

    1
    2
    3
    4
    5
    6
    private void button1_Click(object sender, EventArgs e)
    {
    Login login = new Login();
    login.Owner = this;
    login.Show();
    }
  4. 在B窗体登录按钮单击事件的代码如下

    1
    2
    3
    4
    5
    6
    7
    private void button1_Click(object sender, EventArgs e)
    {
    Form1 form1 = new Form1(textBox1.Text);//把用户输入的账户传到我们刚刚设置好的构造函数里
    form1 = (Form1)Owner;
    form1.ShuaXin();
    Close();
    }

这样就可以实现我们的功能啦。

悠哉码农的日常 wechat
扫一扫上面的微信公众号
坚持原创技术分享,谢谢你为我充电