C# “流布局”面板-如何设置动画

C# “流布局”面板-如何设置动画,c#,winforms,flowlayoutpanel,C#,Winforms,Flowlayoutpanel,我正在开发windows窗体应用程序。因为我使用的是FlowLayoutPanel。 我将所有控件放置在FlowLayoutPanel面板中。我对windows 8主屏幕之类的东西感兴趣。我会将控件放置在FlowLayoutPanel面板中,并以一定的速度一个接一个地设置控件 有没有办法做到这一点 其实我现在做的是, 在我的表单中,我在FlowLayoutPanel 主FlowLayoutPanel属性 this.flpFullLayout.Anchor = ((System.Windows.F

我正在开发windows窗体应用程序。因为我使用的是
FlowLayoutPanel
。 我将所有控件放置在
FlowLayoutPanel
面板中。我对windows 8主屏幕之类的东西感兴趣。我会将控件放置在
FlowLayoutPanel
面板中,并以一定的速度一个接一个地设置控件

有没有办法做到这一点

其实我现在做的是,

在我的表单中,我在
FlowLayoutPanel

FlowLayoutPanel
属性

this.flpFullLayout.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                    | System.Windows.Forms.AnchorStyles.Left)));
this.flpFullLayout.AutoScroll = true;
this.flpFullLayout.BackColor = System.Drawing.SystemColors.Control;
this.flpFullLayout.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.flpFullLayout.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
this.flpFullLayout.Location = new System.Drawing.Point(2, 32);
this.flpFullLayout.Name = "flpFullLayout";
this.flpFullLayout.Size = new System.Drawing.Size(1014, 559);
this.flpFullLayout.Controls.Add(this.pnlDummy1);
this.flpFullLayout.Controls.Add(this.pnlAddUserFull);
this.flpFullLayout.Controls.Add(this.pnlDummy2);
this.flpFullLayout.Controls.Add(this.pnlAccess);
this.flpFullLayout.Controls.Add(this.pnlDummy3);
this.flpFullLayout.Controls.Add(this.pnlDashBord);
在表单加载中,我通过后台工作人员减少了虚拟面板的大小

Thread.Sleep(200);
            if (pnlDummy2.InvokeRequired)
                pnlDummy2.Invoke(new MethodInvoker(delegate
                {
                    for (int len = 570; len > 0; len -= 10)
                   {
                        Thread.Sleep(2);
                        pnlDummy2.Size = new Size(950, len);
                        flpFullLayout.ScrollControlIntoView(pnlAddUser);
                    }
                    pnlDummy2.Visible = false;
                    flpFullLayout.ScrollControlIntoView(pnlAddUser);
                }));
            else
            {
                for (int len = 570; len > 0; len -= 10)
                {
                    Thread.Sleep(2);
                    pnlDummy2.Size = new Size(950, len);
                    flpFullLayout.ScrollControlIntoView(pnlAddUser);
                }
                pnlDummy2.Visible = false;
                flpFullLayout.ScrollControlIntoView(pnlAddUser);
            }
            Thread.Sleep(200);
            if (pnlDummy3.InvokeRequired)
                pnlDummy3.Invoke(new MethodInvoker(delegate
                {
                    for (int len = 570; len > 0; len -= 10)
                    {
                        Thread.Sleep(2);
                        pnlDummy3.Size = new Size(950, len);
                        flpFullLayout.ScrollControlIntoView(pnlAddUser);
                    }
                    pnlDummy3.Visible = false;
                    flpFullLayout.ScrollControlIntoView(pnlAddUser);
                }));
            else
            {
                for (int len = 570; len > 0; len -= 10)
               {
                    Thread.Sleep(2);
                   pnlDummy3.Size = new Size(950, len);
                   flpFullLayout.ScrollControlIntoView(pnlAddUser);
                }
                pnlDummy3.Visible = false;
                flpFullLayout.ScrollControlIntoView(pnlAddUser);
            }

我做这些事情是为了实现简单的动画。有没有什么简单的方法可以做到这一点。

如果您使用Windows窗体进行此操作,那么您就将自己限制在实际可以实现的范围内

如果您自己滚动这个解决方案,最好滚动一个完全自定义的控件

如果你有一些闲钱,那么已经有一些组件公司提供Windows8风格的metro tile界面


为了获得最佳效果,请放弃Windows窗体并使用WPF。

我建议您仔细阅读动画: