就是这样的我想在显示FORM2之前判断FORM2是否已经在显示了要是已经显示(就是已经在桌面上了)就不再显示FORM2反之显示!

解决方案 »

  1.   

    if (Form2!= Null)
    {
        Form2 myForm = new Form2();
    }
      

  2.   

    错了,是if(Form2 = Null)
    {
        Form2 myForm = new Form2();
    }
      

  3.   

    你可以做一个flag
    bool flag;
    在你得click事件中写
    if (!flag)
    {
        Form2 myform = new Form2();
        flag = true;

      

  4.   

    我前两天刚开始看C#,所以不一定对
    但简单的思路应该是这样的你试试设置一个Boolean类型的公共变量,
    在窗体打开的时候置True,关闭的时候置False
    然后就可以判断是不是打开了啊。
      

  5.   

    这样的话只有设标记了,重载它的构造和dispose函数
      

  6.   

    icedreamboy(REMING)的方法是最简单的!!
      

  7.   

    if(frm!=null)
    {
    if(frm.IsDisposed)
    {
    frm.Dispose();
    frm=new New();
    frm.MdiParent=this;
    }
    frm.Show();
    }
    else
    {
    frm=new New();
    frm.MdiParent=this;
    frm.Show();
    }这个已经试过,有用的。
      

  8.   

    楼上:
    解释一下为什么要if(frm.IsDisposed)
    {
    frm.Dispose();
    frm=new New();
    frm.MdiParent=this;
    }
      

  9.   

    http://www.zpcity.com/arli/doc/cs_4.htm
      

  10.   

    private Form frm = null;private void button1_Click(object sender, System.EventArgs e) {
    if (frm == null || ! frm.Created) frm = new Form2(); 
    frm.Show(); 

      

  11.   

    樓上的( yaoyaonet(绿洲) )的代碼行的嗎?
    frm.Created會提示沒有實例化的吧
      

  12.   

    if(myForm == null || myForm.IsDisposed) 
    {
        Form2 myForm = new Form2();
    }
      

  13.   

    比如说判断frmIsOpen窗体是否打开,你可以在frmIsOpen先定义:public static frmIsOpen s_frmIsOpen; 然后在构造函数中写 s_frmIsOpen=this; 最后再在frmIsOpen_Close中写入s_frmIsOpen=null;
    如果,现在是在frmCheck窗体中检测是否打开,你可以写
    if(frmIsOpen.s_frmIsOpen==null)
    {
        MessageBox.Show("窗体没有打开");
    }
    else
    {
         MessageBox.Show("窗体已经打开");
    }我在我现在已经作万的系统中就这么作的,肯定对
      

  14.   

    public void showMdiChild(System.Windows.Forms.Form MdiChildForm)
    {
    int i;
    Form[] frmForms = this.MdiChildren;
    bool btrue=false;

    Cursor.Current=Cursors.WaitCursor;

    for (i=0; i<frmForms.Length; i++)
    {
    //窗体类实例转换成字符串时相同,说明是同一个实例
    if (frmForms[i].ToString()==MdiChildForm.ToString())
    {
    MdiChildForm.Dispose(); //释放刚创建的子窗体的实例资源
    this.MdiChildren[i].Activate(); //将已经创建的实例窗体激活

    btrue=true;
    }
    }
    //如果i等于窗体数组的长度,
    //说明上面的循环完成后没有找到窗体实例与传过来的窗体实例相同,
    //说明新创建的窗体没有被创建过,那么就把它显示出来
    if(btrue==false)
    {
    MdiChildForm.MdiParent = this; //指定窗体的MDI父窗体
    MdiChildForm.Show();
    if(MdiChildForm.MaximizeBox ==false)
    {
    MdiChildForm.WindowState =  FormWindowState.Normal ;
    MdiChildForm.StartPosition =FormStartPosition.CenterScreen;
    }
    else
    MdiChildForm.WindowState =  FormWindowState.Maximized  ; 
    }
     
    Cursor.Current =Cursors.Default ;
    }
      

  15.   

    干嘛要那么复杂,用句语句就搞定了呀
    if (!Page.IsPostBack )
    你的程序是window应用程序,还是WEB应用程序?
      

  16.   

    应该是window应用程序,cdbnzc(菜得不能再菜)的方法,出错,,还有没有其他好的方法判断,关注
      

  17.   

    public bool setTop(string strFormName) {

    for (int i=0;i<this.MdiChildren.Length ;i++) {
    if (this.MdiChildren[i].Name.Equals(strFormName)) {
    this.MdiChildren[i].Activate();
    return true;
    }
    }
    return false;
    }
    private void menuItem4_Click(object sender, System.EventArgs e)
    {
    bool bln ;
    bln = false;
    bln =setTop("Child");
    if (bln == false) {
    Child CForm = new Child(this);
    CForm.Show() ;
    }

    }
    setTop函数是用来判断窗口是否已经打开
    True 已打开 ,把那个窗口放到最前面
    Falee 没打开
      

  18.   

    DreamQWJ(慕容)的方法可用,我已经使用了,呵呵,