Winforms如何编写代码来调整窗口大小(并同时移动)?

时间:2012-04-22 02:49:54

标签: c# winforms user-interface user-controls window

我正在制作一个自定义窗口。当您从左侧或顶部调整窗口大小时,窗口在技术上会同时移动和调整大小。我需要创造这种效果。我没有发布我的代码,因为它甚至没有关闭,窗口只是快速地跳到屏幕上......但这里是用于调整大小和移动的代码:

private void SetMousePosition(MouseEventArgs Position) {
    MousePos = Position.Location;
}
private void SetRightPosition(MouseEventArgs Position) {
    MouseDif = new Point(PointToClient(MousePosition).X - this.Width, PointToClient(MousePosition).Y - this.Height);
}
private void StartDrag(MouseEventArgs e) {
    if (e.Button == MouseButtons.Left) {
        int x = this.Left + e.X - MousePos.X;
        int y = this.Top + e.Y - MousePos.Y;
        this.Location = new Point(x, y);
    }
}
private void StartRightResize(MouseEventArgs e) {
    if (e.Button == MouseButtons.Left)
    {
        title.Text = PointToClient(MousePosition).X.ToString();
        int x = PointToClient(MousePosition).X - MouseDif.X;
        if (x < 60) x = 60;
        this.Width = x;
    }
}

这是我用于拖动的代码,仅用于从右边框调整大小。我只需要能够使用左边框来调整大小...我还需要这个能够使用用户控件和自定义窗口,我不知道ID虽然有意义...

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您是否尝试过SetBounds方法,它允许您在单个操作中更改大小和位置?这应该会阻止控件重新绘制。

当然,您可能需要对控件(BitBlt)进行描述,隐藏控件并使用该占位符调整大小,然后在调整大小完成时,设置实际控件的边界并使其成为可能再次可见。