0

我做了以下编程。运行应用程序显示错误消息:索引超出范围。必须是非负数且小于集合的大小。

编辑:

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();
        }
    }

请你帮助我好吗?提前致谢。

亲切的问候。

4

2 回答 2

0

如果您查看错误消息,它实际上会准确地告诉您正在发生的事情(您只需要能够说该语言)。“索引超出范围”意味着您有 N 个项目,并且您尝试获取 (N + 1) 个项目。换句话说,您正试图获得一些不存在的东西,这可能是由于您的程序中的逻辑错误,但也可能是您希望有 N+1 个项目,但没有。

最好的方法是使用调试器首先找出你在哪一行得到异常。在 ForEach ( ) 的第一行放置一个断点Verknüpfung.AddRange将使您开始调试它。

为了消除,您需要 (1) 修复您的输入文件或 (2) 解决您的逻辑错误,这样您就不会尝试读取比数组中存在的更多的项目。

于 2014-01-19T13:49:06.150 回答
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]); };
于 2014-01-19T13:54:25.680 回答