日期:2014-05-17  浏览次数:20786 次

如何从主窗体传值到子窗体
 IPEndPoint readerip = new IPEndPoint(IPAddress.Parse(currentDevice.DeviceIP),currentDevice.PortNo);
我如何将主窗体的currentDevice.DeviceIP和currentDevice.PortNo传值给子窗体?
           public string  IP()
          {
              string ip;
              ip = currentDevice.DeviceIP;
              return ip;        
          }
          public int PORT()
          {
              int port;
              port = currentDevice.PortNo;
              return port;
          }
想试着用上面的函数传值,可是报错:未将对象引用设置到对象的实例
我应该怎么修改呢?或者是谁有好的方法呢?

------解决方案--------------------
报错,应该是你的currentDevice为null,你需要先赋值,至于子窗体传值,你需要说清楚子窗体与主窗体的逻辑关系以及调用关系,确切的说是应用场景。传值方式还是有很多的
------解决方案--------------------
窗体间传值的几种方法,搬运过来的~
第一种方法:
创建一个类,里面声明用于存储接收的字段。传的时候存储于字段中,要用的时候,直接类名.字段名 进行调用。(这种方法传递是双向的)
 
第二种方法:
1.在Form1里定义

public string Name = "*****"

 
2. 在Form2里创建Form1对象,

Form1 f = new Form1();

 
然后就可以通过f.Name取值了
 
第三种方法:用构造函数
在窗体Form2中


int value1; 
string value2; 

public Form2 ( int value1 , string value2 ) 

     InitializeComponent ( ); 

     this.value1 = value1; 
     this.value2 = value2; 
}


在窗体Form1中这样调用

new Form2 ( 111 , "222" ).Show ( ); 

这样就把111,"222",这2个值传送给了Form2  d
但是这样的传值是单向的

第四种方法:通过窗体的公有属性值(特点:实现简单)
举例“在窗体Form2中定义一个公有属性Form2Value,获取和设置textBox1的文本值



public string Form2Value 

     get 
     {