winform确定窗体第一次出现时的位置 如何实现类似QQ登录框打开多个的效果。就是第二个窗体不会完全覆盖第一个窗体而是错开了一点~!当关闭第一个窗体,在打开一个新窗体的位置就在刚才关闭的第一个窗体的位置那里 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 启动的时候自己判断呗,把每个窗体的Loaction加到一个LIST里面去,然后判断 自己可以根据location来判断啊 你取的是相对坐标吧,location是相对于窗体内部左上角的,不包含上面那个名称的部位如果你想让他挡住自己设置出现的位置吧 加到List里面很麻烦啊。 不同的窗体要有不同的 LIST。 比如窗体A、窗体B。就要有2个list。 而且关闭N个A窗体里面的一个时还要从LIST里面把他删除,下次在打开A的时候还得在去循环LIST 大哥们,我知道通过location可以搞定,关键是怎么搞~! 先判断开启了几个这样的窗口然后把这个值放进i;this.location.X += i*5;this.location.Y += i*5;每次打开这个窗口的时候都判断开启了几个就可以了 如果已经连续打开了5个窗体,这个时候把第二个窗体关闭,在打开第六个窗体显示的位置就在窗体5的X+5\Y+5上了。其实应该是在窗体1的X+5\Y+5坐标上 这就麻烦了 难道这样?先判断有多少个窗体 把结果给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;另外 你判断窗体是怎么判断的 我不怎么会 刚才试了下QQ的 我开启了5个窗口然后把第2个关掉 然后把第5个拖到以前第2个窗口的位置再打开一个QQ 结果就和第2个重叠了 恩,难道真的要做几个LIST么。 你是为了做什么啊 要开那么多啊这样做确实是太烦了 可以换个思路啊你有没有见过的有的 winfrom的窗体它开多了 也有重回的啊 this.location.X += i*5; this.location.Y += i*5; 首先要判断有没有运行这个程序如果已经有运行的了那么就改变一下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); } 不能写在else 后面 另外加一个命名空间 using System.Threading;写在哪里你自己弄吧 都给你了 也记不住 不好意思没有说明白,不是新运行。而是form1里面弹出 N个FORM2进程只有一个. 并且这样也没有修改坐标的方法。不能随机修改~! 刚才做了下试验,打开三个QQ聊天窗口f1,f2,f3,然后关闭f2,再打开新窗口f4,这时候f4在f3的递增位置上,然后有把f4挪到任意其他位置,再打开f5,发现f5出现的位置是f4新位置的递增位上,所以判断新窗口的位置应该与前一窗口有关不过,再做另一个试验,开窗口f1,f2,然后关掉f2,再打开新的窗口f3,发现这时候新窗口f3在原f2位置上,所以判断新窗口抓的不应该是前一窗口,而是之前开启的所有窗口里的最后一个个人感觉应该是用list C# WinFrom 自定义安装包 如何编程检测知道某个网址可访问与两张网卡的问题 自动释放问题 子类继承父类后一定要实现父类的虚成员吗? MaskedTextBox用法 AxWebBrowser怎样用代理访问? 美国CNN网站现在的问题变了,情况对咱们不利! 请问如何在C#的sqlcommand中使用datetime 如何创建APP.exe.config 急死我了!请高手帮忙!谢谢啦!谢谢啦!在线等待! C# 如何实现 FTP下载 ? 关于网站建设
然后把这个值放进i;
this.location.X += i*5;
this.location.Y += i*5;
每次打开这个窗口的时候都判断开启了几个就可以了
如果已经连续打开了5个窗体,这个时候把第二个窗体关闭,在打开第六个窗体显示的位置就在窗体5的X+5\Y+5上了。其实应该是在窗体1的X+5\Y+5坐标上
先判断有多少个窗体 把结果给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;另外 你判断窗体是怎么判断的 我不怎么会
我开启了5个窗口
然后把第2个关掉
然后把第5个拖到以前第2个窗口的位置
再打开一个QQ
结果就和第2个重叠了
恩,难道真的要做几个LIST么。
this.location.Y += i*5;
如果已经有运行的了那么就改变一下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);
}
另外加一个命名空间 using System.Threading;
写在哪里你自己弄吧 都给你了 也记不住
不好意思没有说明白,不是新运行。而是form1里面弹出 N个FORM2进程只有一个. 并且这样也没有修改坐标的方法。不能随机修改~!
不过,再做另一个试验,开窗口f1,f2,然后关掉f2,再打开新的窗口f3,发现这时候新窗口f3在原f2位置上,所以判断新窗口抓的不应该是前一窗口,而是之前开启的所有窗口里的最后一个
个人感觉应该是用list