我正在一个需要多列TreeView控件的项目中。经过研究,似乎需要一个自定义控件,但幸运的是,我在CodeProject上找到了一个不错的控件:https://www.codeproject.com/Articles/26849/The-TreeListView-To-End-All-TreeListViews
我一直在很大程度上依赖于此控件,但是由于我无法实际访问开发人员足够共享的项目文件中的源代码,因此遇到了一些非常具有挑战性的bug。我要处理的主要问题是当控件的大小调整到几乎需要显示水平滚动条的位置时弹出的崩溃。我注意到,调整大小时,大约有10个像素的死区,该控件将在您需要之前显示水平滚动条,这可能是由于在测量子树节点的缩进宽度时很奇怪。在这种状态下,将显示滚动条,滚动条将填充整个条,并且不允许您向左或向右滚动。
除了您在这种状态下使用鼠标滚轮会抛出ArgumentOutOfRange异常并拉低我的应用程序外,这没有让我感到困扰:
“-1”的值对“ Value”无效。 “价值”应介于 “最小”和“最大”。
我很希望能够处理此异常,但是我对VB.NET和Windows Forms还是很陌生,并且仍在学习如何处理事件。如果有一种直接的方法可以覆盖OnMouseWheel事件,或者处理可能触发的错误,那就太好了。社区可能提出的任何其他建议将不胜感激。
如果有帮助,这是错误的StackTrace的顶部:
System.Windows.Forms.ScrollBar.set_Value(Int32值) WinControls.ListView.ContainerListView.OnMouseWheel(MouseEventArgs e)
ListTreeView控件(我正在使用的一个)从ContainerListView继承。 ContainerListView的OnMouseWheel事件受保护。这是否意味着我将无法覆盖它?
感谢,很高兴提供其他所需信息。