当前位置: 代码迷 >> C# >> 怎么取得Form的Border和标题栏的高度
  详细解决方案

怎么取得Form的Border和标题栏的高度

热度:86   发布时间:2016-05-05 03:21:03.0
如何取得Form的Border和标题栏的高度?
题目要求,初始时,DataGridView 控件是隐藏的,当点确定查询后,DataGridView 控件显示。

我是这样实现的,初始化时,先隐藏(panel2.Visible=false;)

事件:点击查询时显示,panel2.Visible=true,
同时 设置Form窗体高度为:
  this.Height = panel1.Height + panel2.Height ;


问题就是这样里了,这样设置后 panel2 显示不全,好像是忽略了Border和标题栏的高度。
this.ClientSize.Height= panel1.Height + panel2.Height ;          会报错,ClientSize.Height不能赋值
  this.Height = panel1.Height + panel2.Height +Border.Height+Title.Height;    也不行。

请问有方法得到Border和标题栏的高度吗?或者有其他方法来解决呢?  非常感谢。



------解决思路----------------------
var rect = this.ClientSize;
rect.Height= panel1.Height + panel2.Height ;  
this.ClientSize = rect;

------解决思路----------------------
算高度是一个方法,但是同学,你这样搞得结果是你如果改变了form的大小,感觉只有form变,里面的控件大小不会变。

我推荐一种解决方法:在每个控件的layout属性中,anchor控制的是你相对于form的位置(自己理解)。
比如你的panel1,anchor设置,top,left,在最大化或者进行改变的时候,相对于form上方和左方的距离会固定不变,然后根据表格的大小改变你的panel1大小
                 panel2,anchor设置top,left,相对于form上方和左方固定不变。

以上,如果你能将panel2固定于form的相对固定位置的话,那么只要设置好panel2的初始坐标,怎么变都应该不会遮蔽。
  相关解决方案