winform窗体传值

学无止境啊~ 2020-06-09 09:29:17
winform中,主窗体向子窗体传值,不弹出窗口,只是将值保存,然后打开子窗体的时候能收到主窗体传过来的值,中间是通过什么可以传过去?(子窗体展示的是后台数据,主窗体将其中某个字段的值改变,子窗体收到值以后将新的值展示出来)
我在model层定义了一个新的model,继承子窗体展示后台信息的model,在主窗体中对新的model进行赋值,子窗体接收新的model的值,但并没有接收到。请问应该怎么写?
子窗体展示后台信息调用的model:
public partial class testModel
{
public testModel()
{ }
#region Model

/// 编号
public int testId { get; set; }

/// 名称
public string testName { get; set; }

/// 值
public string testVal { get; set; }

#endregion Model
}
创建新的model继承上面的model,用来主窗体将新的值传过来
public partial class newtestModel : testModel
{
public newtestModel()
{ }
#region Model

/// 值
public string newtestVal { get; set; }

#endregion Model
}
主窗体中重新组合新的model的值:
public List<Model.newtestModel> newlist = new List<Model.newtestModel>();
foreach (Model.testModel aa in list)//(list是testModel 后台查到的数据)
{
Model.newtestModel b = new Model.newtestModel();
b.testId = aa.testId;
b.testName = aa.testName;
b.newtestVal = 1;
newlist .Add(b);
}
子窗体接收:
fmain fe = new fmain(); //主窗体
List<Model.newtestModel> list = fe.newlist;//结果是null
我想将主窗体更改后的值传给子窗体,在子窗体展示出来。应该怎么写?希望各位大神给予帮助,谢谢~
...全文
763 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
小白卟白 2020-08-08
  • 打赏
  • 举报
回复
写个类 用list 实现多条传递 FormA 赋值 FormB 取值
SayoKun 2020-08-07
  • 打赏
  • 举报
回复

private testModel _model;
private string _param;
private int _type;
public MainWindow(List<testModel> model,String param="",int type=0)
{
_model=model;
_param=param;
_type=type;
}
你在你要弹出的窗口中把构造体改成类似上面这样,就可以在new窗体时传参了(代码如下)。

fmain fe = new fmain(list,"TestMsg",99); 
大概就这样,具体的需要你自己根据实际情况修改。
浅尝辄止; 2020-08-07
  • 打赏
  • 举报
回复
看我博客,可能有点用
glen30 2020-08-06
  • 打赏
  • 举报
回复
子窗体拷贝原来的构造函数,然后粘贴,然后增加一个参数list,在父窗体里面创建子窗体的时候使用子窗体增加的新的构造函数(带list参数的),这样就可以把修改后的list传给子窗体了
m0_48036920 2020-07-10
  • 打赏
  • 举报
回复
方法多种多样, 窗体间传值, 静态变量 委托
mingcsharp 2020-06-16
  • 打赏
  • 举报
回复
1:委托,又名代理 2:事件 3:公共属性 4:定义一个公共静态类 告诉我你喜欢那种?
叫我官人、 2020-06-15
  • 打赏
  • 举报
回复
静态类 ,数据库,或者把窗体传过去,在或者使用引用类型
吗么 2020-06-13
  • 打赏
  • 举报
回复
学习下。。…。…。………
jack66wong 2020-06-12
  • 打赏
  • 举报
回复
在子窗体中定义一个public方法,这个方法获得要传的值。在父窗体实例化子窗体后,调用这个子窗体的方法
昨天忆 2020-06-09
  • 打赏
  • 举报
回复
定义接口,使用接口,参考https://www.cnblogs.com/xbingyou/p/12370909.html
OrdinaryCoder 2020-06-09
  • 打赏
  • 举报
回复
引用 5 楼 学无止境啊~ 的回复:
[quote=引用 3 楼 OrdinaryCoder 的回复:] 首先你这个new一个主窗体就是一个新的主窗体对象了 肯定是不行的 要获取主窗口可以用静态对象存一下主窗口引用 但是这样的话主窗口值变化并不能通知到你的子窗口,子窗口不知道主窗口什么时候发生值变化 这个时候可以在子窗口里定义事件 一旦主窗口发生值变化 调用事件去通知子窗口
这个静态类怎么写可以循环加进去值再在子窗体循环出对应的值展示呢?[/quote] 可以在任意类里定义 public static MainWindow mainWindow; 赋值时 可以在MinWindow的Loaded事件里 类名.mainWindow = this;
正怒月神 2020-06-09
  • 打赏
  • 举报
回复
方法多种多样, 窗体间传值, 1 简单点:静态变量 2 麻烦点:委托 当然,如果你要存数据库,也没关系。。。。。
学无止境啊~ 2020-06-09
  • 打赏
  • 举报
回复
引用 4 楼 Bridge_go 的回复:
fmain的构造函数怎么写的
主窗体的现在还没写,我负责写子窗体。需要做的是建个接口或者model,将主窗体更改的值在子窗体上显示。但现在写的model有问题,或者说是获取的方式有问题
学无止境啊~ 2020-06-09
  • 打赏
  • 举报
回复
引用 3 楼 OrdinaryCoder 的回复:
首先你这个new一个主窗体就是一个新的主窗体对象了 肯定是不行的 要获取主窗口可以用静态对象存一下主窗口引用 但是这样的话主窗口值变化并不能通知到你的子窗口,子窗口不知道主窗口什么时候发生值变化 这个时候可以在子窗口里定义事件 一旦主窗口发生值变化 调用事件去通知子窗口
这个静态类怎么写可以循环加进去值再在子窗体循环出对应的值展示呢?
Bridge_go 2020-06-09
  • 打赏
  • 举报
回复
fmain的构造函数怎么写的
OrdinaryCoder 2020-06-09
  • 打赏
  • 举报
回复
首先你这个new一个主窗体就是一个新的主窗体对象了 肯定是不行的 要获取主窗口可以用静态对象存一下主窗口引用 但是这样的话主窗口值变化并不能通知到你的子窗口,子窗口不知道主窗口什么时候发生值变化 这个时候可以在子窗口里定义事件 一旦主窗口发生值变化 调用事件去通知子窗口
学无止境啊~ 2020-06-09
  • 打赏
  • 举报
回复
引用 1 楼 墨子宸 的回复:
可以使用静态类
能具体点么?
墨子宸 2020-06-09
  • 打赏
  • 举报
回复
可以使用静态类
墨子宸 2020-06-09
  • 打赏
  • 举报
回复
引用 2 楼 学无止境啊~ 的回复:
[quote=引用 1 楼 墨子宸 的回复:]
可以使用静态类

能具体点么?[/quote]

已经告诉方案,要自己去处理咯
正怒月神 2020-06-09
  • 打赏
  • 举报
回复
引用 10 楼 学无止境啊~ 的回复:
[quote=引用 7 楼 正怒月神 的回复:] 方法多种多样, 窗体间传值, 1 简单点:静态变量 2 麻烦点:委托 当然,如果你要存数据库,也没关系。。。。。
静态变量,如何多条呢[/quote] 如果是很多变量,那么可以放到一个类里传递。
加载更多回复(1)

110,526

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧