在Winform开发的时候遇到一个问题,当鼠标指针放到datagridview上时,datagridview的数据行并不会随着鼠标滚轮的滚动而滚动,除非鼠标指针放到滚动条上,滚轮滚动,里面的数据才会跟着滚动。
设置focus、tabindex 都没有效果,我发现当鼠标不放在datagridview的滚动条上是,根本不会出发任何的滚动事件,这是怎么回事呢?有什么解决办法吗?
你想说的不是将鼠标指针放在DataGridView上吧,是用鼠标点击DataGridView,将焦点放在DataGridView上吧?若是这样,这个就和DataGridView的SelectionMode属性有一点关系。
若将SelectionMode设置成FullRowSelect或RowHeaderSelect,在DataGridView上任意点击一下,DataGridView里面的内容便可获取得焦点,此时可上下滚动。
若将SelectionMode设置成CellSelect,在DataGridView上任意点击两下,DataGridView里面的内容便可获取得焦点,此时可上下滚动。
你能不能随便做一个列子啊,我实在是找不到我这个问题在哪里,难道是系统的问题吗?
@kevin_l: 我即使给例子你,你也找不到你的问题所在。我回答的方法你试过吗?
@眯妖: 都试完了的,就是不行啊,真的很奇怪
只有当鼠标焦点在 滚动条出现的容器内滚动时,才会有效果,
应该是可以获取到用户滚动了鼠标滑轮的,然后自己做一些处理!
你有做过吗?最好有详细一点的解决办法,要鼠标没有在滚动条上的时候也能实现滚动的功能。
是的,得自己写滚动效果,大概像这样:
<html> <body onmousewheel="scrollDiv()"> <div id="divTest" style="width:100%;height:200px; overflow:auto"> 1<br/>2<br/>3<br/>4<br/>5<br/>6<br/>7<br/>8<br/>9<br/> 11<br/>12<br/>13<br/>14<br/>15<br/>16<br/>17<br/>18<br/>19<br/> </div> </body> </html> <script> function scrollDiv(ev){ ev=ev||event; var divTest1=document.getElementById("divTest"); var divHeight=parseInt(divTest1.style.height); divTest1.scrollTop=divTest1.scrollTop-(divHeight/5 * ev.wheelDelta/120); } </script>
divHeight/5,的5可以根据实际效果调整下。
不好意思,我这个是Winform里面的,不是web的,谢谢你
winform本身就自带的。可能是由于你的设置出了什么问题。细看dgv的属性设置。
为什么我的不行呢?你能不能随便做一个给我看看
是想鼠标放上去,然后滚动,还是没放上去.就滚动呢.?,没看太明白?
现在看看