KeyDown事件不适用于Silverlight中的箭头键,Home,End,PageUp,PageDown和其他类似键

时间:2010-03-26 05:58:47

标签: c# silverlight-3.0 listbox

我想覆盖ListBox项的选择行为。

我们可以使用向上和向下箭头遍历ListBox项目,但我想使用向左和向右箭头键遍历列表。

当我尝试为ListBox添加按键事件时,它显示除箭头键,Home,End和类似键之外的几乎所有键按下。

我有以下代码:

private void listArtist_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (e.Key.ToString() == "Enter")
    {
        // Go to some page
    }
    else
    {
        MessageBox.Show(e.Key.ToString());
    }
}

我对此毫无头绪。请帮忙。

谢谢, Subhen

2 个答案:

答案 0 :(得分:4)

您需要做的是继承ListBox并覆盖OnKeyDown函数。也许是这样的:

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);
    }
}

答案 1 :(得分:1)