form1和form2之间的赋值和传递

时间:2023-02-04 00:57:25
form1和form2之间的赋值和传递
form1和form2之间的赋值和传递
form1和form2之间的赋值和传递
form1和form2之间的赋值和传递
第一张照片的chongzhixinxi是父窗体,有2个radioButton按钮,当我点击套餐的时候触发CheckedChanged事件,弹出模式化窗口
套餐,在套餐窗口的load事件我写的dataset绑定数据源。
当我选择一条dataGridView数据,进行双击的时候,我要把选择的这一条的数据获取到,然后赋值给chongzhixinxi窗口的textbox,见照片4的代码,但是不起作用,不知道什么?
要怎么写呢,是写值传递呢?还是直接赋值呢?

13 个解决方案

#2


你在套餐窗口中,重新 new 了一个充值信息窗口,这个充值信息窗口跟之前的充值信息窗口,是两个窗口,根本不是同一个窗口。

一般的设计原则,是要保持单向依赖,而避免双向依赖(包括间接双向依赖)。因为双向依赖,由于软件随着需求和开发重构而改变得很快,那么这种依赖所造成的耦合数量也会成指数增长,很容易变成诡异、不可控的“泥潭”一样的尴尬情况。而保持单向依赖,则可以将这种情况尽量回避掉。

因此你的充值信息窗口依赖于套餐窗口,那么设计上(你应该先在纸上画出逻辑关系图,不要死抠这里我写的字眼儿,应该先在头脑中有一个直观的逻辑设计图),就不应该去考虑“套餐窗口去赋值”。因为套餐窗口根本不应该依赖于任何宿主窗口。换句话说,各种窗口都可以使用通用的“套餐窗口”,套餐窗口是通用服务功能的窗口。

套餐窗口不依赖于别的窗口,它就只需要定义一个 public 的属性,供其它窗口读取自己要外露的数据结果即可。例如
public string canshu{get;set;}
那么充值信息窗口在 ShowDialog() 之后,就可以读取 taocan.canshu 的值。

#3


要记住,纠结代码是很低级的事情,你要记住我在这里告诉你的基本的设计原则。

面向对象设计原则中“依赖倒置”是个非常关键的技术(它一句话也要比什么“23 种设计模式”的总和还重要)。对于不同窗口,假设 A 窗口依赖于 B 窗口,那么作为服务B窗口就只能通过“事件”的方式来通知自己的宿主组件“自己改变了”,而不应该想当然地去纠结什么“把数据赋值给A窗口”的设计。

这是一个设计原则。要比编写代码更重要。

#4


在要传值的窗体定义相对应的参数,
From1:
From2 f2=new From2();
f2.参数=要传递的值;

From2 :
public 参数类型 参数名{get;set;}

这样就可以在From2直接调用传递的参数了

#6


传递窗口指针 即窗口引用

#8


form chongzhixinxi=new form()
实例化后 chongzhixinxi.get set 

#9


http://download.csdn.NET/detail/xty13145588950/9639894
这个里面提供一个事件传参数方法,楼主可以看一下。

#11


引用 2 楼 sp1234 的回复:
你在套餐窗口中,重新 new 了一个充值信息窗口,这个充值信息窗口跟之前的充值信息窗口,是两个窗口,根本不是同一个窗口。

一般的设计原则,是要保持单向依赖,而避免双向依赖(包括间接双向依赖)。因为双向依赖,由于软件随着需求和开发重构而改变得很快,那么这种依赖所造成的耦合数量也会成指数增长,很容易变成诡异、不可控的“泥潭”一样的尴尬情况。而保持单向依赖,则可以将这种情况尽量回避掉。

因此你的充值信息窗口依赖于套餐窗口,那么设计上(你应该先在纸上画出逻辑关系图,不要死抠这里我写的字眼儿,应该先在头脑中有一个直观的逻辑设计图),就不应该去考虑“套餐窗口去赋值”。因为套餐窗口根本不应该依赖于任何宿主窗口。换句话说,各种窗口都可以使用通用的“套餐窗口”,套餐窗口是通用服务功能的窗口。

套餐窗口不依赖于别的窗口,它就只需要定义一个 public 的属性,供其它窗口读取自己要外露的数据结果即可。例如
public string canshu{get;set;}
那么充值信息窗口在 ShowDialog() 之后,就可以读取 taocan.canshu 的值。
正解

#12


用委托是把简单事情复杂化了,网上这种实例很多的,你应该百度一下。

#13


大概看了一下,没仔细看,自己理解,你让两个窗口都对数据库操作, 数据库相当于中介;比如弹出窗口,选择以后就改变了数据里的信息,父窗口就可以直接读取数据库中的信息

#1


#2


你在套餐窗口中,重新 new 了一个充值信息窗口,这个充值信息窗口跟之前的充值信息窗口,是两个窗口,根本不是同一个窗口。

一般的设计原则,是要保持单向依赖,而避免双向依赖(包括间接双向依赖)。因为双向依赖,由于软件随着需求和开发重构而改变得很快,那么这种依赖所造成的耦合数量也会成指数增长,很容易变成诡异、不可控的“泥潭”一样的尴尬情况。而保持单向依赖,则可以将这种情况尽量回避掉。

因此你的充值信息窗口依赖于套餐窗口,那么设计上(你应该先在纸上画出逻辑关系图,不要死抠这里我写的字眼儿,应该先在头脑中有一个直观的逻辑设计图),就不应该去考虑“套餐窗口去赋值”。因为套餐窗口根本不应该依赖于任何宿主窗口。换句话说,各种窗口都可以使用通用的“套餐窗口”,套餐窗口是通用服务功能的窗口。

套餐窗口不依赖于别的窗口,它就只需要定义一个 public 的属性,供其它窗口读取自己要外露的数据结果即可。例如
public string canshu{get;set;}
那么充值信息窗口在 ShowDialog() 之后,就可以读取 taocan.canshu 的值。

#3


要记住,纠结代码是很低级的事情,你要记住我在这里告诉你的基本的设计原则。

面向对象设计原则中“依赖倒置”是个非常关键的技术(它一句话也要比什么“23 种设计模式”的总和还重要)。对于不同窗口,假设 A 窗口依赖于 B 窗口,那么作为服务B窗口就只能通过“事件”的方式来通知自己的宿主组件“自己改变了”,而不应该想当然地去纠结什么“把数据赋值给A窗口”的设计。

这是一个设计原则。要比编写代码更重要。

#4


在要传值的窗体定义相对应的参数,
From1:
From2 f2=new From2();
f2.参数=要传递的值;

From2 :
public 参数类型 参数名{get;set;}

这样就可以在From2直接调用传递的参数了

#5


#6


传递窗口指针 即窗口引用

#7


#8


form chongzhixinxi=new form()
实例化后 chongzhixinxi.get set 

#9


http://download.csdn.NET/detail/xty13145588950/9639894
这个里面提供一个事件传参数方法,楼主可以看一下。

#10


#11


引用 2 楼 sp1234 的回复:
你在套餐窗口中,重新 new 了一个充值信息窗口,这个充值信息窗口跟之前的充值信息窗口,是两个窗口,根本不是同一个窗口。

一般的设计原则,是要保持单向依赖,而避免双向依赖(包括间接双向依赖)。因为双向依赖,由于软件随着需求和开发重构而改变得很快,那么这种依赖所造成的耦合数量也会成指数增长,很容易变成诡异、不可控的“泥潭”一样的尴尬情况。而保持单向依赖,则可以将这种情况尽量回避掉。

因此你的充值信息窗口依赖于套餐窗口,那么设计上(你应该先在纸上画出逻辑关系图,不要死抠这里我写的字眼儿,应该先在头脑中有一个直观的逻辑设计图),就不应该去考虑“套餐窗口去赋值”。因为套餐窗口根本不应该依赖于任何宿主窗口。换句话说,各种窗口都可以使用通用的“套餐窗口”,套餐窗口是通用服务功能的窗口。

套餐窗口不依赖于别的窗口,它就只需要定义一个 public 的属性,供其它窗口读取自己要外露的数据结果即可。例如
public string canshu{get;set;}
那么充值信息窗口在 ShowDialog() 之后,就可以读取 taocan.canshu 的值。
正解

#12


用委托是把简单事情复杂化了,网上这种实例很多的,你应该百度一下。

#13


大概看了一下,没仔细看,自己理解,你让两个窗口都对数据库操作, 数据库相当于中介;比如弹出窗口,选择以后就改变了数据里的信息,父窗口就可以直接读取数据库中的信息