2014-01-19 61 views
0

我做了以下編程。運行該應用程序會顯示一條錯誤消息:索引超出範圍。必須是非負數且小於集合的大小。C#:索引超出範圍,必須是非負數並小於集合的大小

編輯:

public void SetShortcuts() 
    { 
     List<string> Verknüpfung = new List<string>(); 
     int i = 0; 
     int j = 0; 

     try 
     { 
      foreach (string Datei in Directory.GetFiles(PfadShortcuts, "*.txt")) 
      { 
       Verknüpfung.AddRange(File.ReadAllLines(Datei, Encoding.UTF8)); 

       Image ShortcutIcon = new Image(); 
       ShortcutIcon.Source = new BitmapImage(new Uri(@"Fugue Icons\document.png", UriKind.Relative)); 
       ShortcutIcon.Height = 16; 
       ShortcutIcon.Width = 16; 
       ShortcutIcon.Stretch = Stretch.None; 

       MenuItem Shortcut = new MenuItem(); 
       Shortcut.Icon = ShortcutIcon; 
       Shortcut.Header = Verknüpfung[0 + i]; 
       Shortcut.Padding = new Thickness(5); 
       Shortcut.Click += delegate { Process.Start(Verknüpfung[0 + j]); }; 

       Shortcuts.Items.Add(Shortcut); 
       i += 2; 
       j++; 
      } 
     } 
     catch 
     { 
      Fehlermeldung_Main_Shortcuts(); 
     } 
    } 

你能幫幫我嗎? 在此先感謝。

親切的問候。

+1

你不檢查任何地方,我 Shai

+0

感謝。但爲什麼我需要這樣做,在哪裏? – gpuk360

+0

不知道,沒有打擾讀你的代碼,因爲你做錯了所有的事情。 – Shai

回答

0

看行:

Verknüpfung.AddRange(File.ReadAllLines(Datei, Encoding.UTF8)); 

Shortcut.Click += delegate { Process.Start(Verknüpfung[1 + i]); }; 

Verknüpfung[1 + i]爲比然後號碼列表中的項目的較高的一個。

我似乎正在遞增比列表填充更快。

嘗試改變

Shortcut.Click += delegate { Process.Start(Verknüpfung[1 + i]); }; 

Shortcut.Click += delegate { Process.Start(Verknüpfung[0 + i]); }; 
+0

Verknüpfung.Count()是14.這是我想要處理的行數。 Verknüpfung[1 + i]必須從行「2」開始,然後獲取2行內容。我該如何解決它? – gpuk360

+0

除非我誤解Verknüpfung是一個新的空列表。 它沒有第2行開始。 Verknüpfung[1 + i]是從0開始的數組編號。 –

+0

那麼,「Shortcut.Header =Verknüpfung[0 + i];」作品。它將標題設置爲創建的菜單。我試圖做的是設置一個點擊事件到每一行。 0行:你好; 第1行:運行網站; 第2行:世界; 第3行:運行網站; ... – gpuk360

0

如果你看看錯誤信息,它實際上告訴你到底發生了什麼(你只需要說出這種語言)。 「索引超出範圍」意味着你有N件物品,並且你試圖拿(N + 1)物品。換句話說,你試圖得到一些不存在的東西,可能是由於程序中的錯誤邏輯,但它也可能是你期望有N + 1項,但是不是。

最好的方法來解決這個問題,就是使用調試器來首先找出你正在得到異常的那一行。在ForEach的第一行放置一個斷點(Verknüpfung.AddRange)將使您調試它。

爲了消除,你需要 (1)解決您的輸入文件或 (2)解決您的邏輯錯誤 所以你是不是想了解更多的項目比存在在數組中。

相關問題