我进行了以下编程。运行该应用程序显示错误消息:索引超出范围。必须是非负的,并且小于收集的大小。
编辑:
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 Iconsdocument.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();
}
}
你能帮我吗?预先感谢。
善意。
看行:
Verknüpfung.AddRange(File.ReadAllLines(Datei, Encoding.UTF8));
和
Shortcut.Click += delegate { Process.Start(Verknüpfung[1 + i]); };
verknüpfung[1 i]比列表中的项目数高一个。
i似乎比列表所填充的速度更快。
尝试更改
Shortcut.Click += delegate { Process.Start(Verknüpfung[1 + i]); };
to
Shortcut.Click += delegate { Process.Start(Verknüpfung[0 + i]); };
如果您查看错误消息,它实际上会告诉您发生了什么(您只需要能够说语言)即可。"索引超出范围"是指您有N项目,并且您尝试采用(n 1)项目。换句话说,您正在尝试获得不存在的东西,这可能是由于程序中的逻辑错误所致,但也可能是您期望拥有n 1个项目,但不要。
抓住此问题的最佳方法是使用调试器首先找出您正在获得例外的行。将断点放在您的foreach(Verknüpfung.AddRange
)中的第一行将使您进行调试。
要消除,您需要(1)修复您的输入文件或(2)解决您的逻辑错误因此,您并没有试图读取比数组中存在更多的项目。