namespace csglTest
{
   public partial class Form2 : Form
   {
     bool tag = false; 
     public Form2()
        {
            InitializeComponent();
           if(tag == true)
           {
            mailList = Form2.GetMailList();   
           }         
        }
        private void button1_Click(object sender, EventArgs e)
     {
       tag = true;
       return;
       .....
     }
   }
}
我想把button1_Click事件中的tag返回到public Form2()里的if语句里,为什么上面这么做不行啊??...
另外因为return后面还有语句,我想返回tag后继续运行return后面的语句....请问怎么做??
说白了就是:怎么在button1点击事件后运行 mailList = Form2.GetMailList();
(程序要求mailList = Form2.GetMailList(); 不能拉到事件处理中)  

解决方案 »

  1.   

    public Form2() 是构造还是,是当创建了类实例是最先被调用的函数。
    你在button1_click赋值之后,不会再进Form2()了
      

  2.   

       public Form2() 
            { 
                InitializeComponent(); 
               button1_Click(null,null);
              if(tag == true) 
              { 
                mailList = Form2.GetMailList();  
              }        
            } 
      

  3.   


    怪我没说清楚,button1_Click事件处理里还以OpenFileDialog类建了个dlg, 
    按你这样写一运行就弹出文件对话框了...
      

  4.   


    那么我把我的事件描述下,你看看该怎么设计才好??一个form界面上面有个button,点击button,产生一个文件对话框,选中文件点击OK,让Form调用GetMailList()方法
      

  5.   

    namespace csglTest 

      public partial class Form2 : Form 
      { 
        bool tag = false; //初始化为false
        public Form2() 
            { 
                InitializeComponent(); 
              if(tag == true)//这是一个永假式,下面的代码永远不会被执行,
              { 
                mailList = Form2.GetMailList();  
              }        
            } 
            private void button1_Click(object sender, EventArgs e) 
        { 
          tag = true; //您这里可以执行没有问题,
          return; 
          ..... 
        } 
      } 

    改成以下可能会更好:namespace csglTest 

    public class MailListEventArgs:EventArgs
    {
    private bool m_Invoked=false;
    public MailListEventArgs(bool isInvoked)
    {
    m_Invoked=isInvoked;
    }public bool InvokedMailList
    {
    return m_Invoked;
    }
    }
      public partial class Form2 : Form 
      { 
    public event EventHandler<MailListEventArgs> InvokeGetMailList;
        public Form2() 
            { 
                InitializeComponent();   
            } 
            private void button1_Click(object sender, EventArgs e) 
        { 
         OnInvokeGetMailList(new MailListEventArgs(true));
        } protected virtual void OnInvokeGetMailList(MailListEventArgs e)
    {
    if(e.InvokedMailList)
    {
    //如果是Form2中的方法,可以在这里调用,如果是窗体外的方法,请订阅事件InvokeGetMailList;
    EventHandler<MailListEventArgs> eh=InvokGetMailList;
    if(eh!=null)
    {
    eh(this,e);
    }
    }
    }
      }