我使用的是c#,我知道您可以简化新对象的创建
List<String> myStrings = new List<String>() { "Hello", "GoodBye" };我还使用它来创建新的树节点。
node_Clicked.Nodes.Add(new TreeNode() { Text = "New Node" });非常有用,然而,当我开始编写它时,我想将其用于列表视图:
folder_listView.Items.Add(
new ListViewItem()
{
Text = "First Col",
SubItems.Add(new ListViewItem.ListViewSubItem()
{
Text = "Second Col"
}),我收到Intellisense错误:
初始值设定项成员声明符无效
所以我猜这意味着你不能在新实例化的对象中实例化对象,因为不是新实例化对象中的所有对象(比如列表)都被实例化了?
我这样想对吗?
干杯
发布于 2012-07-12 22:12:43
不,问题是SubItems.Add()是一个方法,而不是一个属性/字段。调用一个方法和初始化一个成员是非常不同的!
也就是说,如果它是可设置的,你就可以执行SubItems = ...,但正如@RB所指出的,它不是。
发布于 2012-07-12 22:33:49
作为lc。需要指出的是,ListViewItemCollection.Add和ListViewSubItemCollection.Add是方法,因此不是常规对象/集合初始化器语法的一部分。因为它不公开setter,所以你可以这样实例化一个新的项目。但是,您可以利用它的AddRange方法,并且可以将子项的构造转换为一个方法,因为没有适合您的构造函数重载:
public ListView folder_listView = new ListView();
public void Build()
{
folder_listView.Items.AddRange(new ListViewItem[]
{
Item("First Col",
new ListViewItem.ListViewSubItem(){ Text = "Second Col" }
),
Item("Another col",
new ListViewItem.ListViewSubItem(){ Text = "Another Second Col" },
new ListViewItem.ListViewSubItem(){ Text = "Another Third Col" }
)
});
}
private static ListViewItem Item(string text, params ListViewItem.ListViewSubItem[] subItems)
{
ListViewItem item = new ListViewItem(text);
item.SubItems.AddRange(subItems);
return item;
}这只是一个示例;您可以随意构建任何类型的helper API,以帮助您管理正在构建的项/子项的属性。
https://stackoverflow.com/questions/11453664
复制相似问题