我需要更新一些listView控件(例如listView1,ListView2,ListView3等)
我在Visual Studio 2015中遇到语法错误。
我已经将其分解为基本问题,因此可以隔离错误。以下是我的代码
private void Form1_Load(object sender, EventArgs e)
{
listView1.Columns.Add("Task", "Task");
Control[] TestlistView = this.Controls.Find("listView1", true);
TestlistView[0].Columns.Add("Task22", "Task22");
}
第一个代码行有效。我把它放在那里只是为了确保对listView1的访问是好的。
我在第3行遇到语法问题(TestlistView [0] .Columns.Add)。
错误是 '控制'不包含'列的定义'没有扩展方法'列'接受类型'控制'的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)
我的困惑在于,当我注释掉第3行并调试并在" this.Controls.Find"之后设置断点。我可以看到" TestlistView"在当地人观察窗口,它看起来都很好 - 已找到控件。
取消注释第3行,visual studio突出显示.Columns。上面详述的错误。
对于解决基本问题的任何帮助或指导都将不胜感激。
答案 0 :(得分:0)
Controls.Find返回Control类型的对象。这些对象可以是从Control继承的任何类型。编译器无法准确确定您要查找的控件类型,因此当您尝试访问不属于Control的属性时,它会出错。
您可以通过告诉编译器您期望的类型来解决此问题。您可以通过添加expicit强制转换,使用Linq和OfType函数或使用" as"来实现此目的。运算符尝试将结果转换为正确的类型。