首页 > 解决方案 > 删除或隐藏gridview winfrom中的垂直滚动条

问题描述

我有一个用于 POS 客户端的 winfrom 应用程序。我的客户有一个触摸屏系统,所以我需要实现按钮以在 gridview 中滚动。

现在我面临的问题是我无法隐藏滚动条。当我试图隐藏滚动条时,出现黑色分割图像

If TypeOf (sender) Is VScrollBar Then
                Dim scrollBar As VScrollBar = CType(sender, VScrollBar)
                If TypeOf (scrollBar.Parent) Is KryptonExtendedGrid Then
                    Dim KryptonGrid As KryptonExtendedGrid = CType(scrollBar.Parent, KryptonExtendedGrid)
                    If KryptonGrid.ScrollControl IsNot Nothing Then
                        If scrollBar.Visible Then
                            grdForecast.ScrollBars = ScrollBars.None
                            scrollBar.Visible = False
                            scrollBar.Hide()
                            KryptonGrid.ScrollControl.DownButton.Enabled = True
                        Else
                            KryptonGrid.ScrollControl.DownButton.Enabled = False
                        End If
                    End If
                End If
            End If

在此处输入图像描述

在此处输入图像描述

标签: c#vb.netwinformsgridviewscrollbar

解决方案


vb.net,经过测试,panel1 内的 panel2,panel2 的宽度比 panel1 稍大,足以隐藏滚动条:

Public Class Form1

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

  Panel1.HorizontalScroll.Visible = False
  Panel1.VerticalScroll.Visible = False

  Panel2.AutoScroll = True
  Panel2.HorizontalScroll.Visible = False
  Panel2.VerticalScroll.Visible = True

End Sub

Private Sub Panel2_MouseWheel(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Panel2.MouseWheel
  If Panel2.Bounds.Contains(e.Location) Then
    Dim vScrollPosition As Integer = Panel2.VerticalScroll.Value
    vScrollPosition = e.Location.Y
    Panel2.Invalidate()
  End If
End Sub

Private Sub Panel2_MouseEnter(sender As Object, e As EventArgs) Handles Panel2.MouseEnter
   Panel2.Select()
End Sub

End Class

这适用于 2 个面板,它肯定会适用于另一个面板中的任何东西,比如 datagridview 你所要做的就是使宽度足够大以隐藏栏

这是一种简单的方法,因为如果您想真正隐藏它们,您将需要覆盖原始控件


推荐阅读