Search code examples
c#listviewselecteditemkeydownkeyup

getting item that is focused on in a listwiew using th up and down arrow key


I wish to get the selected item from a listview, but not by clicking on it as i already have a function that does this. I will like to use my up and down arrow to do this.

I have already got a method but it throws an exception, can anyone help to refactor this? here is the method below

private void lvViewFile_KeyDown(object sender, KeyEventArgs e)
{
    ListView lvTemp = (ListView)sender;
    if (e.KeyCode == Keys.Up)
    {
        if (lvTemp.Focused == true)
        {
            var selected = this.lvCategory.SelectedItems[0].Focused;
        }
    }
    else if (e.KeyCode == Keys.Down)
    {
        if (lvTemp.Focused == true)
        {
            var selected = this.lvCategory.SelectedItems[0].Focused;
        }
    }
}

Solution

  • This seems to do just what i want.

    if (e.KeyCode == Keys.Up)
    {
        if (lvTemp.Focused == true)
        {
            var selected = lvTemp.FocusedItem.Index;
            if (selected.Equals(0))
            {
                enableMoveDown();
            }
            else if (selected.Equals(lvCategory.Items.Count - 1))
            {
                enableMoveUp();
            }
            else
            {
                enableMoveUpMoveDown();
            }
        }
    }
    else if (e.KeyCode == Keys.Down)
    {
        if (lvTemp.Focused == true)
        {
            var selected = lvTemp.FocusedItem.Index;
            if (selected.Equals(0))
            {
                enableMoveDown();
            }
            else if (selected.Equals(lvCategory.Items.Count - 1))
            {
                enableMoveUp();
            }
            else
            {
                enableMoveUpMoveDown();
            }
        }
    }