开发者

KeyDown event is not working for Arrow keys, Home, End, PageUp, PageDown and other similar keys in silverlight

I want to override the selection behavior of ListBox Items.

We can traverse through ListBox items using Up and Down arrows but I want to traverse the list using Left and Right arrow keys.

While I am trying to add the key down event for ListBox, It shows almost all key presses except for Arrow Keys, Home, End and similar keys.

I have the following code:

private void listArtist_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
    if开发者_如何学Python (e.Key.ToString() == "Enter")
    {
        // Go to some page
    }
    else
    {
        MessageBox.Show(e.Key.ToString());
    }
}

I am clueless about this. Please help.

Thanks, Subhen


What you need to do is subclass ListBox and override the OnKeyDown function. Maybe something like this:

class MyListBox : ListBox
{
    protected override void OnKeyDown(KeyEventArgs e)
    {
        switch (e.Key)
        {
        case Key.Left:
            // ....
            e.Handled = true;
            break;
        case Key.Right:
            // ....
            e.Handled = true;
            break;
        }

        if (!e.Handled)
            base.OnKeyDown(e);
    }
}


Do you mind if i give the idea of handling keyup event instead

http://weblogs.asp.net/jgalloway/archive/2007/07/02/some-keyboard-input-tricks-for-silverlight-1-1-alpha.aspx

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜