Исключение ListView: System.ArgumentOutOfRangeException: Аргумент находится вне диапазона - PullRequest
0 голосов
/ 16 июня 2011

Я пытаюсь создать программу для запуска определенного приложения, которое было выбрано в ListView. У меня есть ListView с именем SoftView в моем приложении, и код для события DoubleClick следующий:

private void SoftView_DoubleClick(object sender, EventArgs e)

{

 ...
 if (SoftView.Items[SoftView.SelectedIndices[0]].SubItems[0].Text == "Application name")

 {

  ...
   -- Run selected application --
  Application.Exit();

 }

}

При исполнении у меня есть следующее исключение:

System.ArgumentOutOfRangeException: Аргумент находится вне диапазона.

Имя параметра: индекс

в System.Windows.Forms.ListView + SelectedIndexCollection.get_Item (Int32 index) [0x00000]

at Launcher.MainForm.SoftView_DoubleClick (отправитель System.Object, System.EventArgs e) [0x00000]

в System.Windows.Forms.Control.OnDoubleClick (System.EventArgs e) [0x00000]

в System.Windows.Forms.ListView + ItemControl.HandleClicks (System.Windows.Forms.MouseEventArgs me) [0x00000]

в System.Windows.Forms.ListView + ItemControl.ItemsMouseUp (отправитель System.Object, System.Windows.Forms.MouseEventArgs me) [0x00000]

в System.Windows.Forms.Control.OnMouseUp (System.Windows.Forms.MouseEventArgs e) [0x00000]

в System.Windows.Forms.Control.WmLButtonUp (System.Windows.Forms.Message & m) [0x00000]

в System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message & m) [0x00000]

в System.Windows.Forms.ListView + ItemControl.WndProc (System.Windows.Forms.Message & m) [0x00000]

в System.Windows.Forms.Control + ControlWindowTarget.OnMessage (System.Windows.Forms.Message & m) [0x00000]

в System.Windows.Forms.Control + ControlNativeWindow.WndProc (System.Windows.Forms.Message & m) [0x00000]

в System.Windows.Forms.NativeWindow.WndProc (IntPtr hWnd, Msg msg, IntPtr wParam, IntPtr lParam) [0x00000]

Кто-нибудь знает, как решить эту проблему? Заранее спасибо.

1 Ответ

1 голос
/ 16 июня 2011

Нет выбранных индексов в тот момент, когда двойной щелчок

SoftView.SelectedIndices пуст.Поэтому SoftView.SelectedIndices[0] выдает исключение.

Исправление может быть таким:

if (SoftView.Items.Count == 0)
    return;
if (SoftView.SelectedIndices.Count == 0)
    return;
if (SoftView.Items[SoftView.SelectedIndices[0]].SubItems[0].Text == "Application name")
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...