private void Form2_Load(object sender, EventArgs e) 
        { 
            label1.Text = (((Form1)this.Owner).Controls["comboBox1"] as System.Windows.Forms.ComboBox).Text;
        } 楼主需要注意的是:Form1 fm1 = new Form1(); 
            label1.Text = fm1.customername; 这种写法相当于重新建了个Form,而不是你打开的那个Form1
因此值是不会有的。(Form1)this.Owner) 这样得到的是父窗体,这个才是你第一次打开的窗体!

解决方案 »

  1.   

    Form2 改为:namespace session
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
            
            private string customername;
            public string CustomerName 
            {
                 get {return this.customername;}
                 set{this.CustomerName=this.customername}
             }
            private void Form2_Load(object sender, EventArgs e)
            {
                label1.Text = this.customername;
            }
        }
      

  2.   

    Form1 改为;
    namespace session
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private string xiaoname;
            public string  customername
            {
                get
                {
                    return(xiaoname);
                }
                set
              {
                   
                    xiaoname=value;
              }
            }
            private void button1_Click(object sender, EventArgs e)
            {
        
                    Form2 fm2 = new Form2();
                    fm2.CustomerName =(string)comboBox1.ValueMember;
                    fm2.Show();        }     
        }
      

  3.   

    不想用xray2005的方法,因为我还要弹出许多其他的窗口,所以我想使用ouc_ajax的方法。可惜的是代码输入进去无法运行,请大家在帮忙看看!!
      

  4.   

    你可以在Form2中添加一个字段: 
    private Form1 fm1;
    然后在Form2的构造函数中写:
    public Form2(Form1 fm1
            { 
                InitializeComponent(); 
                this.fm1 = fm1;
            } 
    然后在Form1的button时间里这么调用:
    if (comboBox1.Text == "teacher") 
                { 
                    Form2 fm2 = new Form2(this); 
                    fm2.Show();             
                } 
    这样你就可以直接在Form2中
    private void Form2_Load(object sender, EventArgs e) 
            { 
                //Form1 fm1 = new Form1();  //注意这行已经被注释,不需要创建新的Form1实例.
                label1.Text = fm1.customername; 
            } 
      

  5.   


    怎么无法运行了??忘了说了,Form1中改成 
                   Form2 fm2 = new Form2(); 
                    fm2.Show(this);          //也就是表示这是弹出窗体Form1的父窗体
    这样再在Form2中调用
      label1.Text = (((Form1)this.Owner).Controls["comboBox1"] as System.Windows.Forms.ComboBox).Text; 
      

  6.   

    参考:http://blog.csdn.net/mngzilin/archive/2010/01/01/5118256.aspx
      

  7.   

    直接这样改
                  Form2 fm2 = new Form2(); 
                    fm2.Show(this);     ouc_ajax改的比较实惠,不错,谢谢楼上各位热心的朋友!!!
      

  8.   

    -。- 搞不懂说啥呢 我理解这样 2个FORM 然后 你点 一个按钮 然F2弹出来 在点F1上的按钮 让F2的label.Text 改变?  public Form1()
            {
                InitializeComponent();
            }
            Form2 f2 = new Form2();
            private void button1_Click(object sender, EventArgs e)
            {
           
                f2.Show();
            }        private void button1_Click_1(object sender, EventArgs e)
            {
                f2.label1.Text = this.textBox1.Text;
            }这是F1代码 你给F2的label1 改成public 就OK了 最简单了 再不然 就用 构造函数传过去
      

  9.   

    我觉得用构造函数传值很容易实现啊,窗体之间传值就是类之间传参啊,一个窗体生成另一个窗体时给她传上参数
    var form=new Form2(参数,参数………………);
    form.ShowDialog(this);
      

  10.   

    xray2005
    你好
    你做的方法让人看的头昏
    我试了一下,也不行
      

  11.   

    public static string temp;声明一个静态属性