Control zoom level of WinForms using mouse sroll wheel and Ctrl in VB.NET -


if have winform, may know how can control zoom level of font in application (as application window obviously) using ctrl + mouse scroll wheel? see there delta in scroll wheel event, not sure how works. there code sample can into?

thanks help!

you'll have handle keydown , keyup event in order determine whether or not ctrl key being held down. value should stored @ class-level because used other subroutines besides keydown , keyup events.

you write code handle form's mousewheel event. scrolling downwards (towards you) causes negative value delta property of mouseeventargs. scrolling upwards reverse. value of delta property 120.

microsoft's reason value follows:

currently, value of 120 standard 1 detent. if higher resolution mice introduced, definition of wheel_delta might become smaller. applications should check positive or negative value rather aggregate total.

in context you'll check sign of delta , perform action.

here sample code implementing basic 'zoom' functionality:

public class form1     enum zoomdirection         none                 down     end enum      dim ctrlisdown boolean     dim zoomvalue integer      sub new()          ' call required designer.         initializecomponent()          ' add initialization after initializecomponent() call.         zoomvalue = 100     end sub      private sub form1_keydown_keyup(byval sender object, _                                     byval e keyeventargs) _                 handles me.keydown, me.keyup          ctrlisdown = e.control     end sub      private sub form1_mousewheel(byval sender object,                                   byval e mouseeventargs) _                 handles me.mousewheel          'check if control being held down         if ctrlisdown             'evaluate delta's sign , call appropriate zoom command             select case math.sign(e.delta)                 case < 0                     zoom(zoomdirection.down)                 case > 0                     zoom(zoomdirection.up)                 case else                     zoom(zoomdirection.none)             end select         end if     end sub      private sub zoom(byval direction zoomdirection)         'change zoom value based on direction passed          select case direction             case zoomdirection.up                 zoomvalue += 1             case zoomdirection.down                 zoomvalue -= 1             case else                 'do nothing         end select          me.text = zoomvalue.tostring()     end sub end class 

read on following more information question:

  1. msdn: control.keydown event
  2. msdn: control.keyup event
  3. msdn: control.mousewheel event
  4. msdn: mouseeventargs class

Comments

Popular posts from this blog

c# - How to set Z index when using WPF DrawingContext? -

razor - Is this a bug in WebMatrix PageData? -

visual c++ - Using relative values in array sorting ( asm ) -