如何实现类似QQ登录框打开多个的效果。就是第二个窗体不会完全覆盖第一个窗体而是错开了一点~!当关闭第一个窗体,在打开一个新窗体的位置就在刚才关闭的第一个窗体的位置那里

解决方案 »

  1.   

    启动的时候自己判断呗,把每个窗体的Loaction加到一个LIST里面去,然后判断
      

  2.   

    自己可以根据location来判断啊
      

  3.   

    你取的是相对坐标吧,location是相对于窗体内部左上角的,不包含上面那个名称的部位如果你想让他挡住自己设置出现的位置吧
      

  4.   

    加到List里面很麻烦啊。  不同的窗体要有不同的 LIST。 比如窗体A、窗体B。就要有2个list。 而且关闭N个A窗体里面的一个时还要从LIST里面把他删除,下次在打开A的时候还得在去循环LIST
      

  5.   

    大哥们,我知道通过location可以搞定,关键是怎么搞~!  
      

  6.   

    先判断开启了几个这样的窗口
    然后把这个值放进i;
    this.location.X += i*5;
    this.location.Y += i*5;
    每次打开这个窗口的时候都判断开启了几个就可以了
      

  7.   


    如果已经连续打开了5个窗体,这个时候把第二个窗体关闭,在打开第六个窗体显示的位置就在窗体5的X+5\Y+5上了。其实应该是在窗体1的X+5\Y+5坐标上
      

  8.   

    这就麻烦了 难道这样?
    先判断有多少个窗体 把结果给k
    假设初始的坐标是200,200
    然后循环判断location为(200 + 5 * i,200 + 5 * i)的窗体是否存在,i<=k
    如果在j位置的不存在

    this.location.X += j*5;
    this.location.Y += j*5;
    并且结束循环
    如果都存在 

    this.location.X += (k+1)*5;
    this.location.Y += (k+1)*5;另外 你判断窗体是怎么判断的 我不怎么会
      

  9.   

    刚才试了下QQ的 
    我开启了5个窗口
    然后把第2个关掉 
    然后把第5个拖到以前第2个窗口的位置
    再打开一个QQ 
    结果就和第2个重叠了
      

  10.   


    恩,难道真的要做几个LIST么。
      

  11.   

    你是为了做什么啊  要开那么多啊这样做确实是太烦了 可以换个思路啊你有没有见过的有的  winfrom的窗体它开多了 也有重回的啊
      

  12.   

    this.location.X += i*5; 
    this.location.Y += i*5; 
      

  13.   

    首先要判断有没有运行这个程序
    如果已经有运行的了那么就改变一下location
    判断程序是否在运行的方法如下
    (在入口函数那里)            bool bExist;
                Mutex MyMutex = new Mutex(true, "OnlyRunOncetime", out bExist);
                if (bExist)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new frm_pross());
                }
                else
                {
                    MessageBox.Show("程序已运行");
                    //要是已经运行了 那就修改它的location
                    //this.location=new new System.Drawing.Point(506, 215);
                }
      

  14.   

    不能写在else 后面 
    另外加一个命名空间  using System.Threading;
    写在哪里你自己弄吧 都给你了 也记不住
      

  15.   


    不好意思没有说明白,不是新运行。而是form1里面弹出 N个FORM2进程只有一个.   并且这样也没有修改坐标的方法。不能随机修改~!
      

  16.   

    刚才做了下试验,打开三个QQ聊天窗口f1,f2,f3,然后关闭f2,再打开新窗口f4,这时候f4在f3的递增位置上,然后有把f4挪到任意其他位置,再打开f5,发现f5出现的位置是f4新位置的递增位上,所以判断新窗口的位置应该与前一窗口有关
    不过,再做另一个试验,开窗口f1,f2,然后关掉f2,再打开新的窗口f3,发现这时候新窗口f3在原f2位置上,所以判断新窗口抓的不应该是前一窗口,而是之前开启的所有窗口里的最后一个
    个人感觉应该是用list