我有一个Form1里面有个“连接服务器”按钮,点完这个按钮之后,会弹出一个窗体Form2填写服务器的IP地址,填写完成后点击“确定”按钮,Form2里的IP地址就会传递给Form1,这个应该怎么实现???

解决方案 »

  1.   

    http://www.cnblogs.com/cosoft/archive/2011/08/08/2130659.html
      

  2.   

    相当于你的Form1,调用Form2窗体,利用构造函数传递进入你的信息private void button3_Click(object sender, EventArgs e)
            {
                Form2 f2 = new Form2("我传递的信息");
                f2.SelectedAEventHandle += new DelegateSelectedA(f2_SelectedAEventHandle);
                f2.Show();
            }        /// <summary>
            /// 利用回调显示回传的信息
            /// </summary>
            /// <param name="strMyData"></param>
            private void f2_SelectedAEventHandle(string strMyData)
            {
                MessageBox.Show(strMyData);
            }相当于你的Form2窗体,该窗体通过构造接受Form1的参数,
    用户选择后,点击OK按钮通过委托调用Form1的函数,同时传递刚才用户的选择信息给Form1窗体
    namespace WindowsApplication4
    {
        public partial class Form2 : Form
        {
            /// <summary>
            /// 委托事件
            /// </summary>
            public event DelegateSelectedA SelectedAEventHandle;        /// <summary>
            /// 
            /// </summary>
            private string m_strMyData = null;        /// <summary>
            /// 构造函数接收参数信息
            /// </summary>
            public Form2(string strMyData)
            {
                InitializeComponent();            this.m_strMyData = strMyData;
            }        private void Form2_Load(object sender, EventArgs e)
            {        }        /// <summary>
            /// 当用户点击确定后
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void m_BtnOK_Click(object sender, EventArgs e)
            {
                if (this.SelectedAEventHandle != null)
                {
                    this.SelectedAEventHandle("我回传的数据");
                }
                this.Close();
            }
        }    /// <summary>
        /// 委托
        /// </summary>
        /// <param name="strMyData"></param>
        public delegate void DelegateSelectedA(string strMyData);
    }
      

  3.   

    在 From2 第一已个public全局变量IP 在From2的窗体关闭事件中 给全局变量IP赋值,回到窗体From1是获取From2全局变量IP的值
      

  4.   

    在 From2 第一定义一个public全局变量IP 在From2的窗体关闭事件中 给全局变量IP赋值,回到窗体From1是获取From2全局变量IP的值
      

  5.   

    新建一个类,类里申明一个public static string str;的量,点击确定后,把IP地址赋值给str,然后在form1里面取str的值,可以?
      

  6.   

    除委托外,也可以这样
    //Form1中Form1的窗口句柄传给Form2
                Form2 f = new Form2(this);
                f.ShowDialog();//Form2中填加构造方法
            public Form2(Form1 f)
            {
                f.setParms("A");
            }//Form1中填加公共的填加IP地址方法
            public void setParms(string s)
            {
                textBox1.Text = s;
            }