流布局面板-如何动画
本文关键字:动画 何动画 流布局 | 更新日期: 2023-09-27 17:51:04
我正在开发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窗体中这样做,你就会把自己限制在你可以实际实现的范围内。
如果你自己滚动这个解决方案,你最好滚动一个完全自定义的控件。
如果你有闲钱,已经有组件公司提供windows 8风格的metro tile界面了。
为获得最佳效果,请放弃Windows窗体而使用WPF。