滚动到列表框的顶部和底部

时间:2013-02-09 16:47:01

标签: c# listbox

我有ListBox名为 lstFiles ,显示图像的文件名,然后从列表框中选择,从鼠标或键盘。

然后该图片将显示在PictureBox pictureBox1 中,但我在最后一次输入后尝试让ListBox返回顶部时遇到问题如果您在最后一个条目上选择了键盘上的向下箭头,并且选择了顶部条目,那么当您按下第一个条目上的向上箭头键时,我希望同样的方法转到底部条目。

我已尝试过但无法让它在列表框中工作

我有三个联合列表框来显示系统驱动器,文件夹及其内容

private void lstDrive_SelectedIndexChanged_1(object sender, EventArgs e)
        {
            lstFolders.Items.Clear();
        try
        {
            DriveInfo drive = (DriveInfo)lstDrive.SelectedItem;

            foreach (DirectoryInfo dirInfo in drive.RootDirectory.GetDirectories())
                lstFolders.Items.Add(dirInfo);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

    private void lstFolders_SelectedIndexChanged_1(object sender, EventArgs e)
    {
        lstFiles.Items.Clear();

        DirectoryInfo dir = (DirectoryInfo)lstFolders.SelectedItem;

        foreach (FileInfo fi in dir.GetFiles())
            lstFiles.Items.Add(fi);
    }

    private void lstFiles_SelectedIndexChanged(object sender, EventArgs e)
    {
        pictureBox1.Image = Image.FromFile(((FileInfo)lstFiles.SelectedItem).FullName);

        //I have tried this, but it makes the selected cursor go straight to the bottom file//
        lstFiles.SelectedIndex = lstFiles.Items.Count - 1;

        }
      }
   }

1 个答案:

答案 0 :(得分:2)

您可以通过处理ListBox KeyUp事件来完成此操作。试试这个:

    private int lastIndex = 0;

    private void listBox1_KeyUp(object sender, KeyEventArgs e)
    {

        if (listBox1.SelectedIndex == lastIndex)
        {
            if (e.KeyCode == Keys.Up)
            {
                listBox1.SelectedIndex = listBox1.Items.Count - 1;
            }

            if (e.KeyCode == Keys.Down)
            {
                listBox1.SelectedIndex = 0;
            }                

        }

        lastIndex = listBox1.SelectedIndex;
    }