C#中 两个窗体之间窗体数据关联变化怎么弄??

穆雄雄 2016-05-08 07:54:34
窗体如下:

图一


图二

要求是点击添加歌手的查询之后,跳转到图二的窗体上,然后选择相对应的歌手之后点击“确定”,然后退出这个图二的窗体,显示图一的窗体,并且在图一窗体上的歌手名的textbox上显示初刚刚选择的歌手名。。。

关键代码如下(大家帮忙看看代码怎么改了,谢谢):




...全文
299 9 点赞 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
引用 6 楼 SCGH_Fx 的回复:
[quote=引用 4 楼 qq_34137397 的回复:] 然后图2中的确定按钮下面这么写: ((frmAddSong)this.Owner).SingerName="这里是你要传的值"; 的"这里是你要传的值";应该写啥?我怎么写啥都不对,我的获取选中行的歌手名是:frmaddsong.SingerName=dgvSingerList.SelectedRows[0].Cell[1].Value.Tostring(); 怎么写了?
哦,sorry,失误!应该是这样((frmAddSong)this.Owner).SingerName.Text="这里是你要传的值";[/quote] 把属性改下(因为你这里需要的是传值,不是获取控件,): public string SingerName { get {return txt_singername.Text.Trim;} set{txt_singername.Text=value;} } 然后图2中的确定按钮下面这么写: ((frmAddSong)this.Owner).SingerName="这里是你要传的值";
  • 打赏
  • 举报
回复
引用 4 楼 qq_34137397 的回复:
然后图2中的确定按钮下面这么写: ((frmAddSong)this.Owner).SingerName="这里是你要传的值"; 的"这里是你要传的值";应该写啥?我怎么写啥都不对,我的获取选中行的歌手名是:frmaddsong.SingerName=dgvSingerList.SelectedRows[0].Cell[1].Value.Tostring(); 怎么写了?
哦,sorry,失误!应该是这样((frmAddSong)this.Owner).SingerName.Text="这里是你要传的值";
  • 打赏
  • 举报
回复
南天空 2016-05-08
你这么交叉引用最终没办法完美解决问题的,刚学习WINFORM基本上都遇到你说的这种问题,在不同窗体上传值。 最笨的办法是在构造函数中传递窗体参数,如1#所说,操作的时候针对窗体和控件进行调用。 其次委托封装方法取传值。 参考一下MVC模式,发布订阅者模式来解决。
  • 打赏
  • 举报
回复
穆雄雄 2016-05-08
引用 6 楼 SCGH_Fx 的回复:
[quote=引用 4 楼 qq_34137397 的回复:] 然后图2中的确定按钮下面这么写: ((frmAddSong)this.Owner).SingerName="这里是你要传的值"; 的"这里是你要传的值";应该写啥?我怎么写啥都不对,我的获取选中行的歌手名是:frmaddsong.SingerName=dgvSingerList.SelectedRows[0].Cell[1].Value.Tostring(); 怎么写了?
哦,sorry,失误!应该是这样((frmAddSong)this.Owner).SingerName.Text="这里是你要传的值";[/quote] 好了 谢谢
  • 打赏
  • 举报
回复
穆雄雄 2016-05-08
现在写成这样 了,后面不知道怎么写了......




  • 打赏
  • 举报
回复
穆雄雄 2016-05-08
然后图2中的确定按钮下面这么写: ((frmAddSong)this.Owner).SingerName="这里是你要传的值"; 的"这里是你要传的值";应该写啥?我怎么写啥都不对,我的获取选中行的歌手名是:frmaddsong.SingerName=dgvSingerList.SelectedRows[0].Cell[1].Value.Tostring(); 怎么写了?
  • 打赏
  • 举报
回复
要么用委托,属性都可以,也可以这样: 在图1的.cs中添加一个属性,假如你图1的歌手的TextBox名字为(txt_singername) public TextBox SingerName { get {return txt_singername;} set{txt_singername=value;} } 。然后图1中的查询按钮下面这么写: frmquerysinger fqs=new frmquerysinger() fqs.show(this); 然后图2中的确定按钮下面这么写: ((frmAddSong)this.Owner).SingerName="这里是你要传的值";
  • 打赏
  • 举报
回复
穆雄雄 2016-05-08
可以在详细点吗?我是新手 看不懂
  • 打赏
  • 举报
回复
wtnu200 2016-05-08
frmQureySinger 窗体里,自己写一个构造方法, public Form parentForm; public frmQureySinger (Form parent) { parentForm=parent; } 再在第一个窗体里写一个接受选择结果的方法,比如 public void SetText(string name, ...) 第二个窗体确实时,这样调用 parentForm.SetText(传入要传过第一个窗体的值)
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2016-05-08 07:54
社区公告

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