有没有一种更优雅的方式来安排我的表格

本文关键字:方式 表格 我的 一种 有没有 | 更新日期: 2023-09-27 18:24:01

我是一个相当新手的程序员,最近提出了一个适用于我的项目的解决方案,但我一直在寻找改进代码的方法。

因此,本质上,我有一个弹出的设置表单,我一直在寻找一种方法,将其放在我的主表单旁边,但既不覆盖它,也不部分显示在主表单所在的屏幕之外。我想出了这个方法,但它不是很动态,因为它只检查4个不同的位置,如果它们都不起作用,它会使用默认值,即中央屏幕。

这是我所拥有的:

private void Place_Form(Form formToPlaceNextTo, Form formToPlace)
    {
        Point alignRightTop = new Point(m_parent.Location.X + m_parent.Width, m_parent.Location.Y);
        Point alignRightBottom = new Point(m_parent.Location.X + m_parent.Width, (m_parent.Location.Y + m_parent.Height) - this.Height);
        Point alignLeftTop = new Point(m_parent.Location.X - this.Width, m_parent.Location.Y);
        Point alignLeftBottom = new Point(m_parent.Location.X - this.Width, (m_parent.Location.Y + m_parent.Height) - this.Height);
        if (Screen.FromControl(formToPlace).WorkingArea.Contains(new Rectangle(alignRightTop.X, alignRightTop.Y, this.Width, this.Height)))
        {
            this.Location = alignRightTop;
            return;
        }
        if (Screen.FromControl(formToPlace).WorkingArea.Contains(new Rectangle(alignRightBottom.X, alignRightBottom.Y, this.Width, this.Height)))
        {
            this.Location = alignRightBottom;
            return;
        }
        if (Screen.FromControl(formToPlace).WorkingArea.Contains(new Rectangle(alignLeftTop.X, alignLeftTop.Y, this.Width, this.Height)))
        {
            this.Location = alignLeftTop;
            return;
        }
        if (Screen.FromControl(formToPlace).WorkingArea.Contains(new Rectangle(alignLeftBottom.X, alignLeftBottom.Y, this.Width, this.Height)))
        {
            this.Location = alignLeftBottom;
            return;
        }
    }

有什么建议或首选编码技术吗?

有没有一种更优雅的方式来安排我的表格

根据Snowbear的建议,我使用另一个SE网站提出了同样的问题,得到了很好的回答。

https://codereview.stackexchange.com/questions/8881/is-there-a-more-elegant-way-of-arranging-my-forms