【发布时间】:2014-02-26 22:04:34
【问题描述】:
编辑: 我正在尝试在 WPF C# 应用程序中读取各种(在本例中为 7)文本文件的内容。因此,我使用以下代码,已被编辑:
try
{
List<string> Verknüpfung = new List<string>();
foreach (string Datei in Directory.GetFiles(V.PfadShortcuts, "*.txt"))
{
Verknüpfung.AddRange(File.ReadAllLines(Datei, Encoding.UTF8));
}
for (int i = 0; i <= Verknüpfung.Count - 1; i += 2)
{
Image Icon = new Image();
Icon.Source = new BitmapImage(new Uri(@"Images\Fugue Icons\document.png", UriKind.Relative));
Icon.Height = 16;
Icon.Width = 16;
Icon.Stretch = Stretch.None;
MenuItem MenuItem = new MenuItem();
MenuItem.Click += delegate { Process.Start(Verknüpfung[1 + i]); };
MenuItem.Header = Verknüpfung[0 + i];
MenuItem.Icon = Icon;
MenuItem.Padding = new Thickness(5);
MI_Verknüpfungen.Items.Add(MenuItem);
}
}
我有 7 个文本文件。每个都包含以下内容:第 1 行:标题(如“Google”;对于 HEADER)和第 2 行:流程(如“https://www.google.de/”;对于 CLICK EVENT)。
但是,我得到了这个结果(抱歉隐藏信息,但它包含业务事项):
所以它似乎工作。但不幸的是,当我单击其中一个时,我收到以下错误消息:
德语:“Der Index lag außerhalb des Bereichs。Er muss nicht negativ und kleiner als die Auflistung sein。参数名称:index”
英文:“索引超出范围。必须为非负数且小于集合的大小。参数名称:索引”
当我更改以下内容时,它可以工作:
之前:MenuItem.Click += delegate { Process.Start(Verknüpfung[1 + i]); };
之后:MenuItem.Click += new RoutedEventHandler(MenuItem_Click);
public void MenuItem_Click(object sender, RoutedEventArgs e)
{
for (int i = 0; i <= Verknüpfung.Count - 1; i += 2)
{
Process.Start(Verknüpfung[1 + i]);
}
}
但是现在,当我单击其中一个菜单项时,应用程序会运行所有进程(即保存在我的集合中的所有 7 个“快捷方式”) - 但是,错误消息消失了。 如何管理只运行被点击的进程?
【问题讨论】:
标签: c# wpf list collections parameters