0

我有一个表单,我想在应用程序周围绘制一个自定义标题栏以及自定义边框,以接管表单调整大小。我关闭了应用程序的常规标题栏,并用我设置为锚定到应用程序的一对图像构建了我自己的标题栏。问题是当表格被调整大小时,它看起来很不稳定,因为表格在绘制表格之后才会调整它的大小。为了平滑边界的大小调整,我需要做什么。此外,当我使用边框调整大小时,表单开始闪烁很多并且调整大小并不完全正确。它调整大小,但它也不会调整它应该的数量。这是我用来调整带有边框的表单大小的代码示例。

#region formDragResize
    private Point startDrag = new Point(0, 0);
    private bool resize = false;
    private void rightSideBarMid_MouseDown(object sender, MouseEventArgs e)
    {
        this.startDrag = e.Location;
        this.resize = true;
    }

    private void rightSideBarMid_MouseUp(object sender, MouseEventArgs e)
    {
        this.resize = false;
    }

    private void rightSideBarMid_MouseMove(object sender, MouseEventArgs e)
    {
        if (this.resize)
        {
            Point p1 = new Point(e.X, e.Y);
            Point p2 = this.PointToScreen(p1);
            this.Width = p2.X - this.startDrag.X;
        }
    }
 #endregion

当谈到形成疼痛时,我非常陌生,因此感谢您的帮助。

谢谢!

4

1 回答 1

0

假设您正在谈论 Windows 窗体,您不想关闭标题栏。您将其保持打开状态,然后处理非客户端绘制消息。

但是,Winforms 不包含非客户端绘制事件,因此您必须自己覆盖 WndProc 并处理 NC_* 消息,或者使用执行此操作的第三方库。

于 2010-10-14T14:59:45.080 回答