我将此事件处理程序绑定到listview
ListView1.ColumnWidthChanged
我有这个功能,可以在我的列表中输入数据后立即改变我的列的维度。
ListView1.AutoResizeColumns
我想知道是否有办法暂停VB在自动排序后触发事件?除了人工干预,我的意思是什么?
我虽然设置了一个全局变量,但这需要很多工作并且可能不精确,而且event args参数不包含任何处理鼠标事件的隐式事件,是否有任何方法?
这是我迄今为止尝试过的关于鼠标事件处理的内容:
Sub listview1mousedown(sender As Object, e As EventArgs) Handles ListView1.MouseMove
AddHandler ListView1.ColumnWidthChanged, AddressOf resizetable
End Sub
Sub listview1mouseup(sender As Object, e As EventArgs) Handles ListView1.MouseLeave
RemoveHandler ListView1.ColumnWidthChanged, AddressOf resizetable
End Sub
是否存在关于由其他方式而非鼠标触发的事件的对等解决方案?
答案 0 :(得分:0)
终于找到了,....
显然设置游标事件捕获并不是在标题级别工作,当鼠标离开子项集合的容器的上限时,该函数不会触发任何事件为此我管理了te set focus事件监听器,将鼠标焦点集中在listview上,这对我来说是足够的用户定义行为:
我设置:
AddHandler CType(list, ListView).GotFocus, Sub()
AddHandler CType(list, ListView).ColumnWidthChanged, AddressOf resizetable
Debug.Print("handler on")
End Sub
AddHandler CType(list, ListView).LostFocus,Sub()
RemoveHandler CType(list, ListView).ColumnWidthChanged, AddressOf resizetable
Debug.Print("handler off")
End Sub
然后我在我的Main()
写道:
Public Function resizetable( table As listview, e As columnwidthchangedeventargs)
'... core of the event handler
Debug.Print("Listview column width changed")
End Function
所以我在调试模式下运行我的应用程序并继续手动调整列大小,然后我在调试控制台中看到了这个:
上的处理程序
列表视图列宽已更改
处理程序关闭
我在main()
内运行了这个:
list.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)
我的输出中没有出现!!!!我想我做对了。感谢大家的慎重建议。