只要在同一名字空间就可以了, namespace 
随意的用form1.
pform2->

解决方案 »

  1.   

    可以设几个全局变量,也可自己定义一Class,并将要的变量设定为其属性,后者要好一些哦.
      

  2.   

    每个Form都是一个Form对象,用对象名直接引用就行了:Form1.属性
      

  3.   

    可以在主form中加一个事件,每创建一个子form, 就把自己的处理函数加入主form 的事件委托中. 很方便的, 是设计模式中的 "发布者/观察者"模式.
      

  4.   

    "可以在主form中加一个事件,每创建一个子form, 就把自己的处理函数加入主form 的事件委托中. 很方便的, 是设计模式中的 "发布者/观察者"模式." 这是什么意思啊,大哥?我太菜了,不太明白!
      

  5.   

    例如,我在Form1中生明了一个textBox1和button1的控件,在Form2中生明了一个label1控件.
    在Form1中生明如下方法:
    private void button1_Click(object sender, System.EventArgs e)
    {
                        Form f2=new Form2();
    f2.Show ();
                               this.textBox1.Text =f2.label1.Text;
    }在编译的时侯,结果为错误显示为 "F:\projects\forExample\Form1.cs(237): 不可访问“forExample.sub.label1”,因为它受保护级别限制"
    就是说 this.textBox1.Text =f2.label1.Text;这一句
      

  6.   

    噢,我明白了上面我写的了,只要把label1的属性设为public就可以引用了.可是 
    "可以在主form中加一个事件,每创建一个子form, 就把自己的处理函数加入主form 的事件委托中. 很方便的, 是设计模式中的 "发布者/观察者"模式." 这是什么意思啊,大哥?
    我太菜了,不太明白!想知道,哪位大哥,能够赐教!
      

  7.   

    "可以在主form中加一个事件,每创建一个子form, 就把自己的处理函数加入主form 的事件委托中. 很方便的, 是设计模式中的 "发布者/观察者"模式."
    gz
      

  8.   

    你要传数,在构造函数中写一可以!
    比如:
    Form f2=new Form2(int i);
    f2.Show ();
    当然在form2的构造函数你也要写
    form2(int i)
    {}
    你也可以用性质:
    比如:
    在form2中写
    private int i;
    public geti
    {
     get{return(i))
     set(i= value)
    }
    关于你的错误,是因为label2在f2的定义中是private,你把他改成public就行了
    this.textBox1.Text =f2.label1.Text;
      

  9.   

    上面你的这些我都明白了,可是我是想问:"可以在主form中加一个事件,每创建一个子form, 就把自己的处理函数加入主form 的事件委托中. 很方便的, 是设计模式中的 "发布者/观察者"模式."
     这是什么意思啊,有人能详细解释一下吗?
      

  10.   

    要看你具体想干什么了. 比如说主Form想通知所有的子Form做某个动作,可以在主Form中定义一个事件: 
    class MainForm
    {
       public event EventHandler NotifySubForm;
    }在 子Form的构造函数中,把自己加入主Form 的事件处理中.class Form2
    {
      Form2(MainForm mainForm)
      {
        mainForm.NotifySubForm += new EventHandler(this.DoSomething);
      }
     
      private void DoSomething(...)
      { 
      }
    }
    这样,只要在主Form 中调用 NotifySubForm(..) 就会自动调用所有子Form的处理函数.
      

  11.   

    public class Form1 : System.Windows.Forms.Form//两个窗体之1
    {
        static string OPC;//静态变量用来保存
        public string xx
            {
    set{OPC=value;}
            get{return OPC;}
            }
    }
    public class Form2 : System.Windows.Forms.Form//两个窗体之2
    {
      Form1 form1=new Form1();
      form1.xx=要传递的值;
    }
    这个时候当执行了Form2后,Form2的值就保存在Form1中的OPC里。
      

  12.   

    那在Form1中只声明public event EventHandler NotifySubForm;这个吗?
    怎么定义NotifySubForm啊.555555..................还是不会,
      

  13.   

    还有,我是想问,比如在子窗口一点按钮怎么把数据传到主窗口中,而且两者是同时存在的,也就是不用showDialog()来显示子窗口,用SHOW(),点一下按钮把数据传给主窗口,但是不会关掉子窗口,子窗口和父窗口可以同时使用的.
      

  14.   

    public class Form1 : System.Windows.Forms.Form//两个窗体之1
    {
        static string OPC;//静态变量用来保存
        public string xx
            {
    set{OPC=value;}
            get{return OPC;}
            }
    }
    public class Form2 : System.Windows.Forms.Form//两个窗体之2
    {
      Form1 form1=new Form1();
      form1.xx=要传递的值;
    }
    这个时候当执行了Form2后,Form2的值就保存在Form1中的OPC里。
    问,可是我需要这个数据的如果一个LABEL控件呢,怎么让form2的一个动作来实现,form1中label的数据更新呢.
      

  15.   

    我发了(from sedan),在附件里面,注意查收
      

  16.   

    你还是用了,showDialog()函数了呀,这样就成了模态对话框,我的意思是非模态的怎么回传数据啊!
      

  17.   

    我知道一种方法可以,就是把Form1中的label1改为public static,还有在Form1中所有的关于label1的设置this.label1的引用全部变成Form1.label1的引用,这样,在Form2中就可以随时更新Form1中的label1的数据,但是这样是不是不太安全.
    谁还有好的建议,说出来大伙听听/