如何在VB.net中构建可展开和可折叠的面板?

如何在VB.net中构建可展开和可折叠的面板?,vb.net,winforms,Vb.net,Winforms,我正在寻找一种方法,使一个面板可以扩大和缩小一个小箭头或按钮。我试着找一些例子,但到目前为止没有任何效果。我试图将一个组的大小调整为0px,但问题是当我这样做时,它下面的面板保持在同一个位置,我希望它向上滑动,以节省屏幕空间 我有一堆标签和文本框,它们为我提供数据,但占用了很多空间,我将它们组合在一起 我们将不胜感激 David窗口形式的简单 插入一个按钮并编写代码 简单的例子: Public Class Form1 Dim panelshow As Boolean = False

我正在寻找一种方法,使一个面板可以扩大和缩小一个小箭头或按钮。我试着找一些例子,但到目前为止没有任何效果。我试图将一个组的大小调整为0px,但问题是当我这样做时,它下面的面板保持在同一个位置,我希望它向上滑动,以节省屏幕空间

我有一堆标签和文本框,它们为我提供数据,但占用了很多空间,我将它们组合在一起

我们将不胜感激

David

窗口形式的简单 插入一个按钮并编写代码

简单的例子:

   Public Class Form1
    Dim panelshow As Boolean = False
       Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
          If panelshow = False Then
            panelshow = True
            Panel1.Show()
          Else
            Panel1.Hide()
            panelshow = False
          End If
       End Sub
    End Class
您可以更改变量、按钮和面板的名称

如果在应用程序启动时您的面板已折叠,则将panelshow设置为false;如果您的面板在启动时可见并希望稍后由用户隐藏,则将panelshow设置为true。简单窗口形式 插入一个按钮并编写代码

简单的例子:

   Public Class Form1
    Dim panelshow As Boolean = False
       Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
          If panelshow = False Then
            panelshow = True
            Panel1.Show()
          Else
            Panel1.Hide()
            panelshow = False
          End If
       End Sub
    End Class
您可以更改变量、按钮和面板的名称


如果在应用程序启动时面板被折叠,则将panelshow设置为false;如果面板在启动时可见,并且希望稍后由用户隐藏,则将panelshow设置为true。

如果希望在win窗体中使用动画,例如当面板折叠时,并且额外的空间应该被内容覆盖,则可以使用

Control.Top()和Control.Left()属性'Control=您的控件名,其中写入了标签、文本框等内容

还是第二选择

调整内容大小(如增加大小等)

取决于您的选择,因为我看不到您的表格演示文稿,但根据我的想象力向您提供建议

例如,我的面板高度为100,当我折叠时,我希望下一个控件向上移动100(假设)

假设,我的下一个控件是RichTextBox

然后,您可以在此处进行更改:

Public Class Form1
  Dim panelshow As Boolean = True
  Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    If panelshow = False Then
        panelshow = True
        Panel1.Show()
        RichTextBox1.Top = RichTextBox1.Top + 100
        RichTextBox1.Height = RichTextBox1.Height - 100
    Else
        Panel1.Hide()
        panelshow = False
        RichTextBox1.Top = RichTextBox1.Top - 100
        RichTextBox1.Height = RichTextBox1.Height + 100
    End If
  End Sub
End Class
只需在前面的代码中添加一个方法即可完成此操作。 别介意我的语法错误。 我的英语不是很好


有关更多帮助,请评论或发布您的代码(如果您有任何问题)

如果您想在win窗体中使用动画,例如当面板折叠时,并且额外的空间应包含内容,则可以使用

Control.Top()和Control.Left()属性'Control=您的控件名,其中写入了标签、文本框等内容

还是第二选择

调整内容大小(如增加大小等)

取决于您的选择,因为我看不到您的表格演示文稿,但根据我的想象力向您提供建议

例如,我的面板高度为100,当我折叠时,我希望下一个控件向上移动100(假设)

假设,我的下一个控件是RichTextBox

然后,您可以在此处进行更改:

Public Class Form1
  Dim panelshow As Boolean = True
  Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    If panelshow = False Then
        panelshow = True
        Panel1.Show()
        RichTextBox1.Top = RichTextBox1.Top + 100
        RichTextBox1.Height = RichTextBox1.Height - 100
    Else
        Panel1.Hide()
        panelshow = False
        RichTextBox1.Top = RichTextBox1.Top - 100
        RichTextBox1.Height = RichTextBox1.Height + 100
    End If
  End Sub
End Class
只需在前面的代码中添加一个方法即可完成此操作。 别介意我的语法错误。 我的英语不是很好


要获得更多帮助,请评论或发布您的代码(如果您有任何问题)

大多数人都回答了有关折叠和展开的问题,但要回答您关于“动画”的问题,以便它真正具有良好的幻灯片感。对于winforms,我建议在github上使用此库

然后,您可以编写非常简单的代码,为其提供动画转换

使用transitions库,此代码将在半秒钟内折叠面板:

Transitions.Transition.run(pnl, "Height",
                                   initialValue:=pnl.Height,
                                   destinationValue:=0,
                                   transitionMethod:=New TransitionType_EaseInEaseOut(500)
                                   )

大多数人已经回答了关于折叠和展开的问题,但是要回答您关于“动画”的问题,使其真正具有良好的滑动感觉。对于winforms,我建议在github上使用此库

然后,您可以编写非常简单的代码,为其提供动画转换

使用transitions库,此代码将在半秒钟内折叠面板:

Transitions.Transition.run(pnl, "Height",
                                   initialValue:=pnl.Height,
                                   destinationValue:=0,
                                   transitionMethod:=New TransitionType_EaseInEaseOut(500)
                                   )

这是一个网络项目吗?对不起。我说的是windows窗体。如果您想要一些奇特的UI效果,并且严格限制在Winforms上,请在Winforms中使用WPF控件。例如:这是一个网络项目吗?对不起。我说的是windows窗体。如果您想要一些奇特的UI效果,并且严格限制在Winforms上,请在Winforms中使用WPF控件。例如:如果我想在折叠面板1时将下面的内容向上滑动?如果您想在win窗体中使用动画,例如当面板折叠时,并且额外的空间应该由该内容覆盖,那么您可以使用关于
panelShow=Not panelShow
panel1.Visible=Not panel1.Visible
Pane1.Visible=False或使用Pane1.Hide()如果我想在折叠面板1时将下面的内容向上滑动?如果您想在win窗体中使用动画,例如当面板折叠时,并且该内容应覆盖额外的空间,那么您可以使用关于
panelShow=Not panelShow
panel1.Visible=Not panel1.Visible
Pane1.Visible=False或使用第1栏隐藏()谢谢!我可以用这个!非常感谢。我可以用这个!