码迷,mamicode.com
首页 > Windows程序 > 详细

WinForm ListControl MouseWheel Envent

时间:2014-08-04 13:28:07      阅读:314      评论:0      收藏:0      [点我收藏+]

标签:winform   style   blog   color   使用   io   for   问题   

最近在使用Listbox开发程序的时候, 遇到MouseWheel event 异常。

设置如下:

1. DrawModel:ownerDrawVariable.

2. InternalHeight:False.

3. ScrollAswalysVisible:True.

4. Overwrite DrawItem.

5. Overwrite MeasureItem.

问题是:当items 很多(超过一屏)的时候,HScrollbar enable auto, 这是如果鼠标滚轮翻屏的时候,会有2次闪烁,第二次是:最后一条item从屏幕顶端一下来,像是滚屏一样。使用鼠标点击scrollbar往下拉,没有问题。

解决办法:

重写 ListBox OnMouseWheel Envent:

 1  protected override void OnMouseWheel(MouseEventArgs e)
 2         {
12             int numberOfTextLinesToMove = e.Delta * SystemInformation.MouseWheelScrollLines / 120;
13             int numberOfPixelsToMove = (int)(numberOfTextLinesToMove * this.Font.Size);
14             GraphicsPath mousePath = new GraphicsPath();
15             if (numberOfPixelsToMove != 0)
16             {
17                 System.Drawing.Drawing2D.Matrix translateMatrix = new System.Drawing.Drawing2D.Matrix();
18                 translateMatrix.Translate(0, numberOfPixelsToMove);
19                 mousePath.Transform(translateMatrix);
20             }
21             this.Invalidate();
22         }

 

WinForm ListControl MouseWheel Envent,布布扣,bubuko.com

WinForm ListControl MouseWheel Envent

标签:winform   style   blog   color   使用   io   for   问题   

原文地址:http://www.cnblogs.com/Rufy_Lu/p/3889601.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!