大家好啊,向大家请教个问题:
在Form1中打开Form2,然后执行Form2的某个方法,
根据处理结果来选择执行Form1中的两个方法;
Form1中的两个方法实际是做初始化界面用的,根据需要给与不同的提示信息; //Form1中主要方法*****************************
        //Form1的Button1
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.ShowDialog();
            f2.Dispose();
        }        //Form1的Button2
        private void button2_Click(object sender, EventArgs e)
        {
            //初始化001
            MessageBox.Show("执行Form1的Button2");
        }        //Form1的Button3
        private void button3_Click(object sender, EventArgs e)
        {
            //初始化002
            MessageBox.Show("执行Form1的Button3");
        }
       //Form2中主要方法*****************************
       //Form2窗体的Button1
        private void button1_Click(object sender, EventArgs e)
        {
            string tmp_str = "";
            tmp_str = this.textBox1.Text.Trim().ToString();            if (tmp_str == "A")
            { 
                //返回到窗体Form1时,
                //自动执行Form1中的方法   
                //private void button2_Click(object sender, EventArgs e) {...} 
        
            }            if (tmp_str == "B")
            {
                //返回到窗体Form1时,
                //自动执行Form1中的方法   
                //private void button3_Click(object sender, EventArgs e) {...} 
 
            }
        }
        //关闭窗体Form2,返回到窗体Form1
        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }

解决方案 »

  1.   

    谢谢楼上朋友的回复,
    需要用到SENDMESSAGE  POSTMESSAGE么?
      

  2.   

    例如~~Form1
    Form2 f2 = new Form2();
    f2.tmpstrA += new EventHandler(istmpstrA);private void istmpstrA(object sender, EventArgs e)
            {
                //处理事务。
                 //初始化001
            }Form2
    public event System.EventHandler tmpstrA;
    if (tmp_str == "A") 
                { 
                    //返回到窗体Form1时, 
                    //自动执行Form1中的方法  
                     tmpstrA (this, EventArgs.Empty);      
                } 
      

  3.   

    不知道能不能满足你的要求:
    //Form1中主要方法***************************** 
            //Form1的Button1 
            private void button1_Click(object sender, EventArgs e) 
            { 
                Form2 f2 = new Form2();      f2.F1Form = this;  //修改            f2.ShowDialog(); 
                f2.Dispose(); 
            }         //Form1的Button2 
            private void button2_Click(object sender, EventArgs e) 
            { 
    Init001();  //修改
            }         //Form1的Button3 
            private void button3_Click(object sender, EventArgs e) 
            { 
    Init002();  //修改
            } 

    public void Init001()
    {
                //初始化001 
                MessageBox.Show("执行Form1的Button2"); 
    } public void Init002()
    {
                //初始化002 
                MessageBox.Show("执行Form1的Button3"); 
    }
          //Form2中主要方法***************************** 
          //Form2窗体的Button1 
    public Form F1Form
    {
    get;
    set;
    }        private void button1_Click(object sender, EventArgs e) 
            { 
                string tmp_str = ""; 
                tmp_str = this.textBox1.Text.Trim().ToString();             if (tmp_str == "A") 
                { 
                    //返回到窗体Form1时, 
                    //自动执行Form1中的方法  
                    //private void button2_Click(object sender, EventArgs e) {...}                 //修改
    if (F1Form != null)
    F1Form.Init001();
           
                }             if (tmp_str == "B") 
                { 
                  //返回到窗体Form1时, 
                    //自动执行Form1中的方法  
                    //private void button3_Click(object sender, EventArgs e) {...}                 //修改
    if (F1Form != null)
    F1Form.Init002();
                } 
            } 
            //关闭窗体Form2,返回到窗体Form1 
            private void button2_Click(object sender, EventArgs e) 
            { 
                this.Close(); 
            }
      

  4.   

    form1        private void button1_Click_1(object sender, EventArgs e)
            {
                Form2 f2 = new Form2();
                //打开模式窗口并获得返回值
                DialogResult result=f2.ShowDialog(this);            //根据返回值做操作
                if  (result== DialogResult.Yes)
                {
                    button2_Click(sender, e);
                }
                else if (result == DialogResult.No)
                {
                    button3_Click(sender, e);
                }
                f2.Dispose();
            }
    form2        DialogResult result;      //返回值        //Form2窗体的Button1 
            private void button1_Click(object sender, EventArgs e)
            {
                string tmp_str = "";
                tmp_str = this.textBox1.Text.Trim().ToString();            if (tmp_str == "A")
                {
                    //返回值1 
                    result = DialogResult.Yes;
                }
                if (tmp_str == "B")
                {
                    //返回值2
                    result = DialogResult.No;
                }
            }        //关闭窗体Form2,返回到窗体Form1 
            private void button2_Click(object sender, EventArgs e)
            {
                //设置本窗口的返回值
                this.DialogResult = result;
                this.Close();
            }
      

  5.   

    我帮你调试的方法 可用
    public partial class Form1 : Form
        {
            object s=new object();
            public Form1()
            {
                InitializeComponent();
            }
            public int i = 0;
            private void button1_Click(object sender, EventArgs e)
            {
                Form2 f2 = new Form2(this);
                f2.ShowDialog();
                if (i == 1)
                {
                     //处理你的方法
                }
                if (i == 2)
                {
                     //处理你的方法
                }
            }
        }
    public partial class Form2 : Form
        {
            Form1 a;
            public Form2(Form1 s)
            {
                InitializeComponent();
                a = s;
            }        private void button1_Click(object sender, EventArgs e)
            {
                string tmp_str = "";
                tmp_str = this.textBox1.Text.Trim().ToString();            if (tmp_str == "A")
                {
                    //返回到窗体Form1时, 
                    //自动执行Form1中的方法  
                    //private void button2_Click(object sender, EventArgs e) {...}        
                    a.i = 1;
                }            if (tmp_str == "B")
                {
                    //返回到窗体Form1时, 
                    //自动执行Form1中的方法  
                    //private void button3_Click(object sender, EventArgs e) {...} 
                    a.i = 2;
                }         }
        }
      

  6.   

    参考CSDN第一期总结之一:Form问题