我收到错误的行:
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
答案 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]]
}