• 关于WinForm中Pannel的定位问题 May 18th, 2010


    这两天弄一个WinForm程序,程序有个界面是由多个Panel组成,一个大的Panel包含N个小Panel,每个子Panel可以隐藏掉,或者显示出来,隐藏的子Pannel,它以下的panel需要顶上去
    因此就需要通过计算来设置panel.Location.Y的值。
    我的做法是使用一个成员变量Y来记录距离顶部的高度,也就是每次显示一个Panel的时候加上它的高度,也就是
    Y += panel.Location.Y;
    每次隐藏panel的时候,Y -= pannel.Location.Y;
    但是当界面出现较多Panel,然后界面出现滚动条时,再显示Panel的时候就出现问题。
    后来请教了同事,终于发现问题的所在:

    原来panel.Location的值是相对于窗体的最上方,而不是相对父Panel。
    所以当屏幕出现滚动的时候,那么就需要减去滚动的长度。也就是需要加上第一个Panel的高度,因为第一个是负数了。
    也就是panel.Location = new Point(x,Y+firstPanel.Location.Y)

  • 相关阅读:
    luogu2253 好一个一中腰鼓!
    luogu2948 滑雪课
    luogu1556 幸福的路
    luogu1900 自我数
    luogu1632 点的移动
    luogu1999 高维正方体
    树状数组模板
    杜教筛
    [比赛|考试] 9月第一周的考试
    历年NOIP真题总结
  • 原文地址:https://www.cnblogs.com/coolkiss/p/1768641.html
Copyright © 2020-2023  润新知