我有两个winform
第一个form1的数据员工姓名是经由运算得来的
在第一个form1按个钮,就会呼叫出form2
form2是用来输入员工其它资料的
我希望form2一产生的时候就能够自动获取form1的员工姓名我以前的做法是将form1的员工姓名存到Properties.Settings.Default里面的string
然后form2再去读取Properties.Settings.Default里面的string
请问有其它的方法,可是让form2可以获取form1的数据嘛?

解决方案 »

  1.   


    在form2里:
    string _strname=string.Empty;
    //重载form2构造函数
    public Form2(string strName)
    {
        strname=strName;
    }form1的按钮点击事件:
    private void btn_Click(object sender,EventArgs e)
    {
        string strName="张三";
        new Form2(strName).ShowDialog();
    }
      

  2.   

    用属性
    public partial class CustomerInfo : Form
        {
            string _tel = string.Empty;
            public CustomerInfo()
            {
                InitializeComponent();
            }        public string CusTel
            {
                set { _tel = value; }
                get { return _tel; }
            }
    }private void NewForm(string message)
            {
                CustomerInfo ci = new CustomerInfo();
                ci.CusTel = message;
                ci.Show();
            }
      

  3.   

    思路:点击Form1时传递员工姓名为参数。在Form2中定义一个公共方法接收这个参数,即接收员工姓名。
    附上代码:假设Form1的按钮为button1,员工姓名为EName:
            private void button1_Click(object sender, EventArgs e)
            {
                string Ename = "员工姓名";
                Form2 frm2 = new Form2();
                //调用form的自定义公共方法frmShow(),把Ename传值到Form2
                frm2.frmShow(Ename);
            }在Form2中添加一个公共方法:
            public void frmShow(string str)
            {
                //显示Form2
                this.Show();
                //接收Form1的参数
                 string EName = str;
                //测试是否传值成功
                MessageBox.Show(EName);
            }测试通过,接分。
    希望对楼主有所帮助。
      

  4.   

    重构 Form2
    即可完成        // 重构 Form2
            public Form2(string AccessConnstr, string UserName)
            {
                InitializeComponent();
                _AccessConnStr = AccessConnstr; // _AccessConnStr为 Form2中的一个全局变量 
                _UserName = UserName;// _UserName 为 Form2中的一个全局变量 
             }      //调用 Form2
         private void btn_Click(object sender,EventArgs e)
        {      Form2 My_Frm = new Form2("测试值1","测试值2");
          My_Frm.ShowDialog(); //显示
         }
     
      

  5.   

    第一种:
    给form2创建带参数的构造函数,利用构造函数的参数传递给form2
    第二种:
    把员工姓名放在form1的静态变量中,form2直接访问改静态变量即可
      

  6.   

    不好意思我实作之后发现有个问题漏了问:
    我在form2里面填完员工资料之后
    要怎么将数据回传给form1呢?
    我原来的做法是将数据存到Properties.Settings.Default里面的string1、string2…,然后再由form1去读取
    请问各位大侠有其它方法嘛?
    谢谢
      

  7.   

    在form1中定义一个静态成员变量,f2返回值的时候在f2页面直接赋值给它就好了
      

  8.   

    你这样要需要多少个string呀,还不如用构造函数呢
      

  9.   

    form2大约需要返回18个员工资料string值给form1
    如果传回18个string至form1的静态成员变量
    那么在form2再输入第二个员工资料并返回给form1之后,就会将form1的静态成员变量给覆写我是想问一下
    form1传资料给form2-->已经知道怎么做
    form2回传另外的资料给form1-->想知道有什么其它的好做法,期待大侠解答
      

  10.   

    18个string,那为什么不用实体?传回form1的时候就直接传一个实体对象就好了,同样的,用属性来实现