1)在form1中有button1,以下点击button1的代码:
   private void button1_Click(object sender, System.EventArgs e)
{
Form2 loginfrm =new Form2();
loginfrm.Show(); }2)第一次点击button1弹出form2后,如果再点击button1,又会弹出一个form2窗体。
3)请问怎么判断控制,在form2已弹出情况下,如果再点击button1,form2不重复弹出,并给出提示框???   请各位指点!!!

解决方案 »

  1.   

    Form2 loginfrm = null;
      private void button1_Click(object sender, System.EventArgs e)
    {
    if( loginfrm != null )
    {
    loginfrm =new Form2();
    loginfrm.Show();
    }
    else
    loginfrm.Activate();
    }這是最簡單的一種方法了。
      

  2.   

    to tjvictor:
     1)这种方法是可以,但是如果关闭一次form2之后,再点击button1 就不会弹出form2?
     
      

  3.   

    楼上思路可以,但恐怕实现的不对把楼上方法改进下。 if( this.loginfrm == null )
    {
    this.loginfrm =new Form2();
    this.loginfrm.Show();
    }
    else
    {
    try
    {
    this.loginfrm.Show();
    this.loginfrm.Activate();
    }
    catch 
    {
    this.loginfrm =new Form2();
    this.loginfrm.Show();
    }
    }
      

  4.   

    我隻是說那是最簡單的方法。一般方法是判斷窗體是否在運行。這也有很多方法,我再給你個最簡單的。
    public static ArrayList formList = new ArrayList();
     private void button1_Click(object sender, System.EventArgs e)
    {
    bool FormIsExist = false;
    foreach( Form f in formList )
    {
       if( f is Form2 )
       {
          ((Form2)f).Activate();
           FormIsExist = true;
          break;
        }
    }
    if( !FormIsExist)
    {
    Form2 loginfrm =new Form2();
    formList.add( loginfrm );
    loginfrm.Show();
    }
    }最後在form2的close事件中寫上
    form1.formlist.remove( this );
      

  5.   

    wdy9927()的方法也可以,但是最好在catch處寫上捕捉異常的條件,否則任何異常都會引用窗體的new
      

  6.   

    可以在form2中增加一个public static int 变量,启动一个form之后加1,关闭减1.判断变量就可以控制.
      

  7.   

    定义一个frmActiveFlag, 然后frmActiveFlag=false;
    if(!frmActiveFlag)
    {  
        loginfrm.Show();
        frmActiveFlag=ture;
     }在loginfrm的close事件中, frmActiveFlag=false
      

  8.   

    thanks to tjvictor(下一站----星星)请问这一句:form1.formlist.remove( this );
    为什么括号内(this);可不可写成form1.formlist.remove(form1.formlist)?
    请指点?!!
      

  9.   

    最简单的办法
    bool a=true;
    private void button1_Click(object sender, System.EventArgs e)
    {
      if(a){
        Form2 loginfrm =new Form2();
        loginfrm.Show();
        a=false;
      }
    }