基本上,我只是想知道是否可以禁用水平滚动,同时在VB.NET中使用listview启用垂直滚动,而无需为其创建新类。
为什么呢?嗯,纯粹的美学,我的列表视图目前有一点水平滚动,这并不值得努力为此创建一个新的类,虽然如果它可以编码没有太多的努力,我会非常愿意这样做。
PS:我在Windows Forms中工作
答案 0 :(得分:3)
我经常使用单个列在Details视图中使用ListView控件,以便提供具有拖放功能的列表,这在ListBox控件中是缺少的。除了想要水平滚动的烦人习惯之外,ListView还能很好地工作。通过将列宽设置为合适的值(通常比ListView的宽度小4),可以在一定程度上解决这个问题,但是如果看起来和那样,这将不会很好地渲染。如果控件决定在运行时添加垂直滚动条,则会感觉到更改并完全失败。
我使用的解决方法(而且我承认它并不能应对所有情况)就是这样。首先,使用单个列配置ListView(名称是任意的)并隐藏其标题:
lvList.View = View.Details
lvList.FullRowSelect = True
lvList.Columns.Add("ColName")
lvList.Columns(0).Width = lvList.ClientSize.Width
lvList.HeaderStyle = ColumnHeaderStyle.None
然后处理ListView的ClientSizeChanged事件并使用它将列的宽度设置为客户区的宽度(这实际上是列表主体必须填充的区域):
Private Sub lvList_ClientSizeChanged(ByVal sender As Object, ByVal e As EventArgs) _
Handles lvList.ClientSizeChanged
If lvList.Columns.Count > 0 Then
lvList.Columns(0).Width = lvList.ClientSize.Width
End If
End Sub
当列表内容发生变化并添加或删除垂直滚动条时,将触发ClientSizeChange事件并调整列的宽度,使其完全填充客户区。