2016-01-30 3 views
0

Я бы сделал программу, в которой вы можете выбрать свои фотографии с компьютера в imagelist и listview, а затем, если вы нажмете на любую фотографию, вы сможете просмотреть ее внутри изображения. Проблема запуск, когда я открыть несколько фотографий в ListView первой нажмите на первую картину нет никаких проблем, но если вы хотите, чтобы показать среднюю картину внутри, чтобы PictureBox тогда я получаю эту ошибку:ArgumentOutOfRangeException возникло

ArgumentOutOfRangeException произошедшего

Exception брошено: 'System.ArgumentOutOfRangeException' в System.Windows.Forms.dll

Дополнительная информация: InvalidArgument = значение '0' не является допустимым для 'индекса'.

Помогите мне, ребята?

public partial class TimeLapseForm : Form 
    { 
     public TimeLapseForm() 
     { 
      InitializeComponent(); 
     } 

     int resimSayac = 0; 
     List<string> resimKonumu = new List<string>(); 

     private void TimeLapseForm_Load(object sender, EventArgs e) 
     { 
      openFileDialog1.Multiselect = true; 
      openFileDialog1.Filter = "Jpeg Files|*.jpg;|Png Files|*.png;|Bitmap Files|*.bmp"; 
     } 

     private void browseBttn_Click(object sender, EventArgs e) 
     { 
      if (openFileDialog1.ShowDialog() == DialogResult.OK) 
      { 
       foreach (string DosyaYolu in openFileDialog1.FileNames) 
       { 
        imagelist1.Images.Add(DosyaYolu, Image.FromFile(DosyaYolu)); 
        resimKonumu.Add(DosyaYolu); 
        ListViewItem kucukresim = new ListViewItem(); 
        kucukresim.ImageIndex = resimSayac; 
        listView1.Items.Add(kucukresim); 
        resimSayac++; 
       } 
      } 
     } 

     private void fullScreenToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
      FormBorderStyle = FormBorderStyle.None; 
      WindowState = FormWindowState.Maximized; 
      TopMost = true; 
     } 

     private void TimeLapseForm_KeyDown(object sender, KeyEventArgs e) 
     { 
      if (e.KeyCode == Keys.Escape) 
      { 
       FormBorderStyle = FormBorderStyle.Sizable; 
       WindowState = FormWindowState.Maximized; 
       TopMost = true; 
      } 
      else if (e.KeyCode == Keys.F11) 
      { 
       FormBorderStyle = FormBorderStyle.None; 
       WindowState = FormWindowState.Maximized; 
       TopMost = true; 
      } 
     } 

     private void exitToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
      DialogResult dialog = MessageBox.Show("Are you sure to exit program?", "Exit", MessageBoxButtons.YesNo); 

      if (dialog == DialogResult.Yes) 
      { 
       Application.ExitThread(); 
      } 
      else if (dialog == DialogResult.No) 
      { 
       return; 
      } 
     } 

     private void listView1_SelectedIndexChanged_1(object sender, EventArgs e) 
     { 
      pictureBox1.Image = Image.FromFile(resimKonumu[listView1.SelectedIndices[0]]); 
     } 
    } 
} 
+0

Вопросы, требующие помощи по отладке («почему этот код не работает?») Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для воспроизведения в самом вопросе. Вопросы без четкого описания проблемы не полезны другим читателям. См.: Как создать минимальный, полный и проверенный пример. – DIDoS

ответ

3

Вы должны защитить обработчик listView1_SelectedIndexChanged_1 с невыбранными показателями.

private void listView1_SelectedIndexChanged_1(object sender, EventArgs e) 
{ 
    if (listView1.SelectedIndices.Count == 0) 
    { 
     return; 
    } 

    pictureBox1.Image = Image.FromFile(resimKonumu[listView1.SelectedIndices[0]]); 
} 
+0

Вы сохранили мой проект :) спасибо вам, товарищ –

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