如何制作侧边栏?

时间:2015-07-29 17:15:07

标签: c# winforms animation slide sidebar

我正在使用C#编程语言。 我在Visual Studio 2012中创建了一个新的无边界Windows窗体。我有两个面板。第一个面板( panel1 )停靠在顶部,第二个面板( panel2 )停靠在左侧,其< em>可见状态是 false 。我还在panel1中添加了一个按钮( buttonMenu )并将其停靠在左侧。我想要实现的是,在 buttonMenu 点击,面板2从左侧滑动到其原始位置( 左侧停靠 )以及时buttonMenu 再次点击幻灯片。

我试图设置以下代码:

private void buttonMenu_Click(object sender, EventArgs e)
    {
        panel2.Visible = !panel2.Visible;
    }

它有效,但我试图用动画滑动。

1 个答案:

答案 0 :(得分:1)

更简单的方法是创建一个计时器,并在其Tick事件中更改面板宽度,如此

private Timer timer = new Timer();

bool closing = false;
int desiredWidth = 300
private void ConfigureTimer()
{
   timer.Tick += timer_Tick;
   timer.Interval = 16;
}

private void timer_Tick(object sender, EventArgs e){
{
   if(closing)
   {
      panel2.Width-=15;
      if(panel2.Width < 0) 
      {
        panel2.Width = 0;
        timer.Stop();
      }
   }else{
       panel2.Width+=15;
      if(panel2.Width >= desiredWidth) 
      {
        panel2.Width = desiredWidth;
        timer.Stop();
      }
   }
}

private void SwitchPanelState()
{
    closing = !closing;
    timer.Start();
}
  

但是如果你想让你的生活更轻松,更面向对象,你应该创建一个具有指定行为的控件,并将其添加到表单中