none
ListBox循环选择问题 RRS feed

  • 问题

  • 在listbox里面按下 向下方向键 选中行会下移, 当选中最下一行时,我希望回到第一行, 于是就 listBox1.SelectedIndex = 0;  就是选中了第二行,为什么不能选中第一行?

    listBox1.SetSelected(listBox1.TopIndex, true);也试过了,还是选中第二行,请问为什么会这样的.  在listBox1_KeyDown里面做的,是不是要屏蔽了自动选择下一行啊?

     private void listBox1_KeyDown(object sender, KeyEventArgs e)
            {if (e.KeyCode == Keys.Down)
                {
                    int index = listBox1.SelectedIndex;
                    if (index == listBox1.Items.Count - 1)
                    {
                        // listBox1.SetSelected(listBox1.TopIndex, true);
                        listBox1.SelectedIndex = 0;
                    }
                }

    }

    2010年6月10日 0:25

答案

  • 呵呵,应该是你选择第一行后,继续执行了keys.down所以,选择到第二行了

    你这个时候应该取消keys.down,这样就能保持在第一行了。

    在listBox1.SelectedIndex = 0;后面加上e.Handled = true;即可。


    family as water
    • 已标记为答案 Castrandom 2010年6月10日 3:32
    2010年6月10日 2:15

全部回复

  • 呵呵,应该是你选择第一行后,继续执行了keys.down所以,选择到第二行了

    你这个时候应该取消keys.down,这样就能保持在第一行了。

    在listBox1.SelectedIndex = 0;后面加上e.Handled = true;即可。


    family as water
    • 已标记为答案 Castrandom 2010年6月10日 3:32
    2010年6月10日 2:15
  • 你好

    你可以调试一下,先确认KeyDown事件是SelectIndex改变之前还是改变之后发生,考虑一下应该就可以解决问题。

     

    2010年6月10日 2:20
  • 原来屏蔽是用e.Handled = true; 谢谢了.
    2010年6月10日 3:31