将c#表单应用程序宽度向左更改

本文关键字:表单 应用程序 | 更新日期: 2023-09-27 18:00:02

所以我想在点击按钮时更改表单大小,也希望它看起来像一个小动画,所以这段代码可以帮助我

while (desiredWidht < this.Width)
{
    this.Width += 5;                    
    Thread.Sleep(4);
}

但有一个问题。此代码以正确的方向展开表单。我怎么能在左边做同样的事情。。我试着扩展窗体,然后向左移动,并将所有控件向右移动,但问题是,在窗体达到一定宽度后,控件由于某种原因消失了,当扩展方法完成时,控件又出现了。我搞不清楚问题出在哪里。我这样做的正确方法是什么。

将c#表单应用程序宽度向左更改

Try-

this.Refresh();

在移动控件之后。

const int MAX_STEP = 5;
while (Width < desiredWidth)
{
    int step = Math.Min(MAX_STEP, desiredWidth - Width);
    SetBounds(Left - step, Top, Width + step, Height);
    Refresh();
    Application.DoEvents();
    Thread.Sleep(4);
}

在这里,我做了几件事,第一件是定义最大步长并设置步长,这样你就可以得到你想要的确切宽度。与过度回答相比,这里的最大变化是SetBounds,它将原子地设置所有属性,我的示例程序中没有其他任何内容,所以当我设置宽度然后设置左侧时(以前在测试解决方案时),我看到了右侧的gitter back和form。你可能在其他过程中遇到了这种情况,所以你需要引发事件Application.DoEvents(),就像@banana提到的那样,你可以做一个Refresh(),它应该被自动调用,但再次调用它不会有什么坏处。此外,我在desiredWidth中拼写对了Width,这让我疯了!"this.Property"或"this.Method"是"this"的多余限定符,因此我已将其从示例中删除。

**注意,查看ClientSize.Width,因为它通常是人们想要的,您可能还想查看SetDesktopBounds