Welcome to MSDN Blogs Sign in | Join | Help

Silverlight Tips of the Day

General tips of Silverlight including but limited to game programming tips. Also, general Silverlight news and announcements.
Silverlight Tip of the Day #23 – How to Capture the Mouse Wheel Event

Silverlight currently does not support mouse wheel events. However, you can attach an event to capture the mouse wheel movement through the HtmlPage object. This tutorial will show you how to do it for IE, Opera, Mozilla and Safari browsers.

To start, we declare three events to capture the mouse event in order to cover all the possibilities for all browsers. For example, the DOMMouseScroll event is used by Mozilla.

public Page()
{
    InitializeComponent();
 
    HtmlPage.Window.AttachEvent("DOMMouseScroll", OnMouseWheel);
    HtmlPage.Window.AttachEvent("onmousewheel", OnMouseWheel);
    HtmlPage.Document.AttachEvent("onmousewheel", OnMouseWheel);
}

In our event we can get the delta change in the wheel. The way we do this in Mozilla and Safari browsers is different than how we do it in IE or Opera.

  1. Mozilla/Safari: Check the property called “detail”
  2. IE/Opera: Check the property called “wheeldelta”

Here is the complete code:

private void OnMouseWheel(object sender, HtmlEventArgs args)
{
    double mouseDelta = 0;
    ScriptObject e = args.EventObject;
 
    // Mozilla and Safari
    if (e.GetProperty("detail") != null) 
    {
        mouseDelta = ((double)e.GetProperty("detail"));
    }
    // IE and Opera
    else if (e.GetProperty("wheelDelta") != null) 
        mouseDelta = ((double)e.GetProperty("wheelDelta"));
 
    mouseDelta = Math.Sign(mouseDelta);
}

Thank you,
--Mike Snow

 Subscribe in a reader

Posted: Wednesday, November 19, 2008 8:24 PM by msnow

Comments

No Comments

Anonymous comments are disabled
Page view tracker