日期:2014-05-17  浏览次数:20852 次

请问C#如何做到:让控件的坐标,随着窗体的大小变化而改变
设置Dock和Anchor之类的就不用说了。有没有什么比较好的方法?

比如在sizechange之前如果能记录下窗体的长和宽,再到sizechanged事件中获取一下改变之后的长和宽
利用这个比例去调整控件坐标就很方便了。

但是,关键问题是如何获取改变之前的窗体长和宽呢?
这个改变可能是窗体的最大化和还原到正常,也可能是用鼠标拖动窗体。

我看到很多在Form1_Load获取改变之前的长和宽,那么这样做的话,用鼠标拖动窗体的时候怎么办?

------解决方案--------------------
Resize事件。
------解决方案--------------------
http://msdn.microsoft.com/zh-cn/library/ms229605(v=vs.90).aspx

在silverlight/wpf上也有类似的机制(只不过不是属性,而是一个容器控件)。

比如说我们针对13存的屏幕、1300多点的分辨率做的大屏幕界面,结果要在人家10寸小本上展示,就可以无需写任何代码、让其自动收缩,而所有的鼠标等指点操作的位置也会精确定位。

不过这不应该滥用。因为不论是放大还是缩小,往往给人操作时都带来更多困惑。或者觉得傻大的可笑,或者觉得琐细得根本无法操作。

最好的设计方式,是不改变控件大小,而是根据容易的大小自动布局。例如小屏幕上那么就自动将更多的内容收缩起来,而在大屏幕上那么就将更多内容自动平铺上去。