Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Winforms如何编写代码来调整窗口大小(同时移动)?_C#_Winforms_User Interface_User Controls_Window - Fatal编程技术网

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

C# Winforms如何编写代码来调整窗口大小(同时移动)?,c#,winforms,user-interface,user-controls,window,C#,Winforms,User Interface,User Controls,Window,我正在做一个定制窗口。从左侧或顶部调整窗口大小时,窗口会同时移动和调整大小。我需要创造这种效果。我没有发布我的代码,因为它甚至没有关闭,窗口只是在屏幕上快速跳转。。。但以下是我用于调整大小和移动的代码: private void SetMousePosition(MouseEventArgs Position) { MousePos = Position.Location; } private void SetRightPosition(MouseEventArgs Position)

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

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;
    }
}
private void SetMousePosition(MouseEventArgs位置){
鼠标点=位置。位置;
}
私有void SetRightPosition(MouseEventArgs位置){
MouseDif=新点(PointToClient(MousePosition).X-此.Width,PointToClient(MousePosition).Y-此.Height);
}
私人无效启动标签(MouseEventArgs e){
if(e.Button==MouseButtons.Left){
int x=this.Left+e.x-MousePos.x;
int y=this.Top+e.y-MousePos.y;
该位置=新点(x,y);
}
}
私有void StartRightResize(MouseEventArgs e){
if(e.Button==MouseButtons.Left)
{
title.Text=PointToClient(MousePosition).X.ToString();
int x=指向客户端(MousePosition).x-MouseDif.x;
如果(x<60)x=60;
这个。宽度=x;
}
}
这是我用于拖动的代码,也用于从右边框调整大小。我只需要能够使用左边框来调整大小。。。我还需要它来处理用户控件和自定义窗口,我不知道id是否有意义…

看看这个:

您是否尝试过这种方法,它允许您在一次操作中更改大小和位置?这应该可以防止控件经常被重绘

当然,您可能需要制作控件的图片(
BitBlt
),隐藏控件,并使用该占位符调整大小,然后在调整大小完成后,设置实际控件的边界并使其再次可见