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

时间:2018-05-04 12:04:20

标签: vb.net winforms

我正在寻找一种方法来制作一个可以用一个小箭头或按钮展开和折叠的面板。我试图找到一些例子,到目前为止没有任何效果。我试图将一个组调整为0px,但问题是当我这样做时,它下面的面板停留在同一个地方,我希望它向上滑动,以节省屏幕空间。

我有一堆标签和文本框可以提供数据,但会占用大量空间,我将它们组合在一起。

所有帮助将不胜感激。

大卫

3 个答案:

答案 0 :(得分:1)

简单的窗口窗体 插入按钮并编写代码

简单示例:

   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

您可以更改变量,按钮和面板的名称。

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

答案 1 :(得分:0)

如果您想在获胜表单中使用动画,例如当面板折叠并且附加空间应该包含内容时,您可以使用

Control.Top()和Control.Left()属性' control =您的控件名称,其中的内容被写入,如label,textbox等。

或第二选择

调整内容大小(例如增加尺寸等)。

取决于您的选择,因为我无法看到您的表单,但会根据我的想象为您提供建议。

例如我的面板高度为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

除了我们之前的代码之外,只需添加一个方法来执行此操作。 别担心我的语法错误。 我的英语不够完美。

如需更多帮助,请发表评论或发布您的代码(如果您遇到任何问题)

答案 2 :(得分:0)

大多数人已经回答了关于崩溃和扩展的问题,但回答了关于“动画”的问题,以便它确实具有良好的滑动感觉。对于winforms,我在github DotNet Transitions

上推荐这个库 然后,您可以编写非常简单的代码来为其设置动画过渡。

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

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