A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 白夜行 中级黑马   /  2014-3-24 16:16  /  1335 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 白夜行 于 2014-3-24 19:40 编辑

我想把子窗口的一个对象传到主窗口中,在主窗口创建一个对象,通过showdialog()打开子窗口,为什么在子窗口中没法给这个对象赋值?

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

3 个回复

倒序浏览
不知道那个对像是在哪里定义的,如果是在主窗口里定义的,那么可以重新加个子窗口的重载构造函数,将对像作为参数,然后子窗口再添加一个主窗口的对像类型的属性,在关闭子窗口后主窗口可以获取子窗口修改的对像。
不知道你要的是不是下面的效果
  1. namespace wpftest
  2. {
  3.     /// <summary>
  4.     /// Window1.xaml 的交互逻辑
  5.     /// </summary>
  6.     public partial class Window1 : Window
  7.     {
  8.         public Window1()
  9.         {
  10.             InitializeComponent();

  11.         }

  12.         private void Button_Click(object sender, RoutedEventArgs e)
  13.         {
  14.             Window2 w = new Window2(new a(), "222");// 将a对像传入子窗口Window2
  15.             w.ShowDialog();
  16.             MessageBox.Show(w.w2.name);// 获取Window2里的a对像属性
  17.         }
  18.         public class a
  19.         {
  20.             public string name = "";
  21.         }
  22.     }
  23. }
复制代码
  1. namespace wpftest
  2. {
  3.     /// <summary>
  4.     /// Window2.xaml 的交互逻辑
  5.     /// </summary>
  6.     public partial class Window2 : Window
  7.     {
  8.         public Window2()
  9.         {
  10.             InitializeComponent();
  11.         }
  12.         public Window1.a w2;// 添加对像属性
  13.         public Window2(Window1.a a, string name)
  14.         {
  15.             InitializeComponent();
  16.             a.name = name;
  17.             Title = a.name;
  18.             w2 = a;
  19.             w2.name = "window2xiugai";// 修改属性值,关闭窗口后由主窗口获取这个值
  20.         }
  21.     }
  22. }
复制代码
回复 使用道具 举报 1 0
mdb 发表于 2014-3-24 17:20
不知道那个对像是在哪里定义的,如果是在主窗口里定义的,那么可以重新加个子窗口的重载构造函数,将对像作 ...

原来还可以在窗口加个重载构造函数,之前不知道这个,学习了,谢谢
回复 使用道具 举报
可以在窗口2的后台添加一段代码。public string Name{get;set;}
在窗口1的代码里为Name赋值,然后在窗口2就可以访问这个值了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马