我在WinForms中有点新,当我尝试在列表上使用Average()方法并将其直接保存到label(Label.Text)文本时遇到问题。
this.label2.Text = MyList.Average().ToString();
我的程序编译正常,我在屏幕上看到了上面操作的结果,但是当我将卡切换到Form1.cs [Design]并尝试添加一些新元素时,我看不到窗口。只有这是错误:
Method 'System.Collections.Generic.List`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Average' not found.
这个问题的原因是什么?我想在我的窗口中添加一些东西,但是在Designer中只是不能这样做,只能在代码中,这使得WinForms无用。
答案 0 :(得分:0)
首先,您在代码隐藏文件中尝试了MyList.Average()
。这是有效的,因为默认情况下在后面的所有代码中都使用了Linq
命名空间。
在顶部看,您会看到using System.Linq;
然后你在Form.Designer.cs
尝试了同样的事情并且遇到了这个问题
方法'System.Collections.Generic.List`1 [[System.Int32,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]。平均'找不到。
这是因为默认情况下Designer.cs
没有使用名称空间。
如评论中所述,您可以在设计器文件中硬编码标签文本,然后在Form的加载事件(通常在已使用Linq的代码后面)中分配适当的值。
但如果您真的想在Designer.cs中这样做,请在Designer文件的顶部添加using System.Linq;
。