Winforms如何编写代码来调整窗口大小(并同时移动)
本文关键字:移动 窗口大小 何编写 代码 调整 Winforms | 更新日期: 2023-09-27 18:32:03
我正在制作一个自定义窗口。从左侧或顶部调整窗口大小时,从技术上讲,窗口会同时移动和调整大小。我需要创建这种效果。我没有发布我的代码,因为它甚至没有关闭,窗口只是在屏幕上跳来跳去非常快......但这是我用于调整大小和移动的代码:
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 是否有意义......
您是否尝试过SetBounds
方法,该方法允许您在单个操作中更改大小和位置? 这应该可以防止控件经常被重绘。
当然,您可能需要制作控件的图片 ( BitBlt
),隐藏控件,并使用该占位符调整大小,然后在调整大小完成后,设置实际控件的边界并使其再次可见。
看看这个:
在 Windows 窗体中绘制自定义边框