修复c#wpf中的一行

时间:2016-04-14 09:47:37

标签: c# wpf

我收到错误的行:

IEnumerator enumerator = this.ListBox1.Items.GetEnumerator();
while (enumerator.MoveNext())
{
    object objectValue = RuntimeHelpers.GetObjectValue(enumerator.Current);
    list2.Add(Conversions.ToString(objectValue));
}

错误在第一行。

我得到的错误:

  

错误1' System.Windows.Data.CollectionView.GetEnumerator()'由于其保护级别而无法访问

我该如何解决?

对帮助者来说很好!

MahApps wpf app

2 个答案:

答案 0 :(得分:3)

最简单的解决方法是使用迭代器的语言支持:

foreach (object value in ListBox1.Items)
{
    list2.Add(Conversions.ToString(value));
}

如果您希望值已经是字符串,则可以隐式为您进行foreach循环演示:

foreach (string value in ListBox1.Items)
{
    list2.Add(value);
}

或者如果您正在创建新列表,可以使用单行:

var list2 = ListBox1.Items.Cast<string>().ToList();

您当前代码无效的原因是CollectionView使用 IEnumerable的显式接口实现。您可以将代码更改为:

IEnumerator enumerator = ((IEnumerable)this.ListBox1.Items).GetEnumerator();

...但使用上述方法之一会更好

答案 1 :(得分:0)

请执行以下操作:

lappend output "set_var tmpdir $tmpdir_path" "this is a temporary directory"                             0
lappend output "set vdd $voltage"            "voltage gets its name from Alessandro Volta (1745 – 1827)" 1
lappend output "set gnd 0.0"                 "that's the ground voltage"                                 1
lappend output "set temp $temperature"       "how hot or cold it is"                                     2
lappend output "set topdir $topdir"          "that's the base of the working directory tree"             0

set format "# %2\$s\n%1\$s%3\$s"
# or: set format "%1\$s\t;# %2\$s%3\$s"
# or: set format "%1\$s\n# %2\$s%3\$s"

foreach {cmd com nls} $output {
    puts $fileID [format $format $cmd $com [string repeat \n $nls]]
}