使用ListView自定义滚动

时间:2014-08-08 15:12:13

标签: c# winforms combobox user-controls scrollbar

我的任务是创建一个包含ListView和ComboBox的UserControl,用于对ListView数据进行排序。使用Combobox进行排序很容易;我遇到困难的部分是实现滚动方法。最后,控件应该具有类似Excel的感觉。但是,有时ListView太高或太宽,无法放置它。因此,控件上有两个滚动条。一个只垂直移动ListView,另一个水平移动ListView和ComboBox过滤器。

Very basic mock-up of what the end result should be

请注意,在上图中,ComboBox会根据列宽调整自己,但目前尚未启用该代码。

我尝试了什么:在控件中,过滤器框位于各自的面板中,而ListView有时会有自己的面板。我尝试过对所有控件使用HScroll / VScroll和Horizo​​ntalScroll / VerticalScroll属性以及本机函数ShowScrollBar()的各种组合,但没有任何效果。我出现滚动条的唯一方法是将设置AutoScroll(ListView的Scrollable)设置为true。当然,滚动条成对出现并且仅在同一控件上工作。我还试图以编程方式移动滚动条,但我也无法实现这一点。

我必须做错事,但我不确定它是什么。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

我想我会选择不同的解决方案。

如果您将ComboBoxes放在与AutoSrcoll相同Anchors的{​​{1}}面板中,您可以自由地独立滚动这两个ListView

是的,ScrollBar会出现并占用空间,但我仍然乐意把它作为一个功能出售,而不是一个bug ;-)

至于处理Scroll的{​​{1}}事件:它是隐藏的,您必须将其子类化才能访问它。见here