2013-07-22 4 views
2

Совершенно новое, поэтому, пожалуйста, помогите. У меня есть следующий код изображения. Однако, если пользователь не нажимает на изображение, возникает ошибка. Как я могу выполнить проверку ошибок, чтобы поймать, что если пользователь не нажимает на изображение и не пытается продолжить, появится сообщение с уведомлением о его нажатии на изображение.C# Исключение сбоя

тзд

Ошибка: Ошибка в «ListViewItem SelectedItem = listView1.SelectedItems [0] Ошибка Msg: Недопустимый аргумент = значение '0' не является допустимым для«индекса

Ниже мой код:

private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e) 
{ 
    int i = e.ProgressPercentage; 
    object fbUserObject = e.UserState; 
    if (fbUserObject is DataRow) 
    { 
     var fbUser = fbUserObject as DataRow; 
     var item = new ListViewItem(fbUser["friend_name"].ToString()); 
     item.Tag = fbUser["friend_id"]; 
     item.ImageIndex = i; 
     listView1.Items.Add(item); 
    } 
    else if (fbUserObject is Image) 
    { 
     imageList.Images.Add(fbUserObject as Image); 
    } 
} 

private void imageClicked(Object sender, System.EventArgs e) 
{ 
    ListViewItem selectedItem = listView1.SelectedItems[0]; 
    selectedFBId = selectedItem.Tag as string; 
    selectedFBName = selectedItem.Text; 

    DialogResult dialogA = MessageBox.Show("Analyse employee data?", "SOC", MessageBoxButtons.YesNo); 
    if (dialogA == DialogResult.Yes) 
    { 
     TargetEmployee.Text = "Selected Target: " + selectedFBName; 
     pf.Show(); 
     ThreadPool.QueueUserWorkItem(LoadUserDetails); 
    } 
} 
+1

Где происходит исключение? В реализации LoadUserDetails? – RQDQ

+9

вам не нужно ломать исключение, вам нужно обрабатывать, когда элемент равен нулю – Sayse

+0

, какая строка дает вам ошибку? – Ehsan

ответ

3

изменить код, как это

private void imageClicked(Object sender, System.EventArgs e) 
    { 
     if(listView1.SelectedItems.Count < 1) 
       return; 
     ListViewItem selectedItem = listView1.SelectedItems[0]; 
     selectedFBId = selectedItem.Tag as string; 
     selectedFBName = selectedItem.Text; 

     DialogResult dialogA = MessageBox.Show("Analyse employee data?", "SOC", MessageBoxButtons.YesNo); 
     if (dialogA == DialogResult.Yes) 
     { 
      TargetEmployee.Text = "Selected Target: " + selectedFBName; 
      pf.Show(); 
      ThreadPool.QueueUserWorkItem(LoadUserDetails); 
     } 
    } 
+0

Ошибка в «ListViewItem selectedItem = listView1.SelectedItems [0] Ошибка Msg: Недопустимый аргумент = Значение« 0 »недопустимо для« index –

+0

@SamuelLee вы должны применить проверку, как я упомянул выше, в моем коде, если (listView1.SelectedItems.Count <1) return; – Ehsan

+0

Работает, спасибо! Что делает на самом деле возврат? –

1

вы можете использовать try { } catch { } заявление для обработки ошибок.

После того, как вы найдите строку кода, который генерирует исключение, вы можете обернуть его в блок, как это

try 
{ 
    int a = int.Parse("pedantic"); // This throws an error because you cannot convert 
} 
catch (Exception e) 
{ 
    // Handle your error here instead of crashing your program 
} 
+3

Это даже не компилируется («Подразделение по постоянному нулю») – Sayse

+0

@ Сейсе он только что привел пример того, как обрабатывать исключение. И он так прокомментировал это. – Ehsan

+0

@ EhsanUllah - Я просто придирчивый, обычно примеры должны компилироваться, чтобы OP мог попробовать их, если понадобится, если бы я был более разборчивым, я бы сказал что-то о том, чтобы поймать «Исключение», но я вижу, что SLC пытается делать. Я сказал в своем другом комментарии, почему я не думаю, что это тоже правильно. – Sayse

4

Вы не должны поймать исключение, вы должны обращаться, когда нет каких-либо выбранных элементов

if(listView1.SelectedItems.Count == 0) 
{ 
MessageBox.Show(this, "No image"); 
return; 
} 

Исключения должны быть пойманы, когда вы надеваете Не ожидайте, что что-то произойдет, если вы знаете о возможной проблеме, вы должны это обработать, прежде чем она станет проблемой.

+0

(Возврат выходит из вашего метода) – Sayse

+0

Благодарим за помощь.;) –

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