2013-02-09 5 views
1

У меня есть ListBox с именем lstFiles, который отображает имена файлов изображений, а затем, если выбран из списка, с мыши или клавиатуры.Прокрутите страницу вверх и вниз по списку

Изображение будет показано в PictureBoxpictureBox1, но у меня возникают проблемы, пытаясь сделать ListBox вернуться к началу после последней записи были перечислены, если вы выбрали стрелку вниз на клавиатуре на в последней записи, и выберите верхнюю запись, я хочу, чтобы она попадала в нижнюю запись, когда вы нажимали клавишу со стрелкой вверх при первой записи.

Я попробовал и не могу заставить его работать в ListBox

У меня есть три совместных ListBoxes для отображения системного диска, папки и ее содержимого

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; 

     } 
     } 
    } 
+0

Помогает ли это? http://stackoverflow.com/questions/8796747/how-to-scroll-to-bottom-of-listbox – Haedrian

ответ

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; 
    } 
+0

Спасибо, что так отлично работало^_ ^ – magi4000

Смежные вопросы