Wiki


Wiki Table of Contents

Page Details

Published by:
1 person found this article useful.

100% of people found this useful
Silverlight Tip of the Day #23 – How to Capture the Mouse Wheel Event

Filed under: [Edit Tags]

Silverlight hiện không hỗ trợ sự kiện chuột bánh xe. Tuy nhiên, bạn có thể gắn liền một sự kiện để  nắm giữ hoạt động của chuột bánh xe trong đối tượng HtmlPage . Bài hướng dẫn này sẽ trình bày cho bạn thấy bằng cách nào để làm được điều đó trong các trình duyệt IE, Opera, Mozilla và Safari.

Để bắt đầu, chúng ta khai báo ba sự kiện chuột (mouse event) để bao gồm tất cả những khả năng của  tất cả các trình duyệt. Thí dụ, sự kiện DOMMouseScroll được dùng cho Mozilla.

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

Trong sự kiện của chúng ta, ta có thể lấy delta để thay đổi trong chuột bánh xe (wheel). Phương pháp chúng ta làm điều này trong trình duyệt Mozilla và Safari khác với cách mà chúng ta làm trên IE và Opera.

  1. Mozilla/Safari: Kiểm tra thuộc tính gọi là  “detail”
  2. IE/Opera: Kiểm tra thuộc tính gọi là  “wheeldelta”

Đây là code hoàn chỉnh:

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

Recent Comments

Leave the first comment for this page.