子窗体和父窗体双向传值——C#窗体传值方法总结

简介

  在很多场景下,我们的程序需要完成窗体间的传值功能,有时候是父窗体→子窗体单向传值、子窗体→父窗体传值甚至是,也有时候我们需要父窗体⇆子窗体双向传值。
  在本文中主要介绍一些能够实现双向传值的方法,能够双向传值的方法也能够实现单向传值。
  本文的所有源码都可以在GitHub上下载
  
  本文介绍的方法仅限于我自己知道并且实现过的,我相信还有很多我并不知道的方法,因此也许在很多朋友眼中本文的内容是浅显甚至可笑的,希望路过的各方朋友不吝赐教,我也希望不断地进步!

方法1:Public字段+ShowDialog

原理

  这个方法的原理就是:
  1.父窗体在实例化子窗体对象(假定名为childWindow)的时候,通过对子窗体Public字段进行赋值的方法,完成父窗体→子窗体的传值;
  2.父窗体实例化子窗体后,调用子窗体的childWindow.ShowDialog()方法;
  3.随后在父窗体中对childWindow.DialogResult的值进行判断,当会话结束的时候,将childWindow的字段值传给父窗体,实现子窗体→父窗体的传值。

代码

  示例代码:
  父窗体为MainWindow,子窗体为ChildWindow,我们将两个窗体间Title字段值进行互传。逻辑代码我们都放在了窗体的按钮点击事件中,用按钮来触发。
  
  父窗体代码:

/// <summary>
/// 给子窗体传值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_ShowChild_Click(object sender, RoutedEventArgs e)
{
    ChildWindow child = new ChildWindow() {  Title="我的名字是父窗体给的!" };//第1步,给子窗体传值了
    child.ShowDialog();//第2步,调用ShowDialog

    if (child.DialogResult==true)//第3步,然后对DialogResult进行判断
    {
        this.Title = child.Title;//子窗体给父窗体传值
    }
}

  子窗体代码  

/// <summary>
/// 给父窗体传值
/// </sum
  • 10
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值