- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在详细信息模式下使用 WinForms ListView(.NET 4.0,在 Windows 7 上运行)并且我有一个函数需要清除特定项目中的子项目。不幸的是,当我这样做时,它也清楚了名字:
item.Name = "TESTNAME";
item.SubItems.Clear();
MessageBox.Show(item.Name); //shows nothing
在调试器中,我已经找到它,并且查看了 documentation on MSDN而且没用,
Clear: Removes all subitems and the parent ListViewItem from the collection.
除了 ListViewItem 仍然非常在那里因为稍后在函数中我可以再次向它添加 SubItems!
当然我不必:
while(item.SubItems.Count > 0)
{
item.RemoveAt(0);
}
是吗?
最佳答案
不幸的是 ListView
是一个奇怪的野兽,它的一个奇怪的角落是它的项目只是要显示的值的集合,每列一个。
Name
属性只是自动将一些东西放入第一列,不幸的是这个“东西”存在于 SubItems
集合中。
这意味着如果您检查 SubItems
集合,您会注意到它已经有一个元素,并且在设置项目名称后,您会看到该项目的文本是等于那个名字。
这是 ListViewItem.Name
property 的代码:
public string Name {
get {
if (SubItemCount == 0) {
return string.Empty;
}
else {
return subItems[0].Name;
}
}
set {
SubItems[0].Name = value;
}
}
还有 ListViewSubItem.Name
property看起来像这样:
public string Name {
get {
return (name == null) ? "": name;
}
set {
name = value;
if (owner != null) {
owner.UpdateSubItems(-1);
}
}
}
因此,正如您所发现的那样,清除 SubItems
集合会导致清除第一个项目的属性,此外还会从集合中删除所有其他项目。
实际上,发生的情况是集合被清除,但任何试图在 SubItems
集合为空时查看它的行为都会创建一个包含一项且具有默认属性值的新集合。在上面的示例代码中,读取 SubItems
集合将 automagically assign a collection with one item到内部字段,如果集合尚不存在。
是的,这就是它“工作”的方式。
事实上,要删除第一个子项以外的所有子项,您的循环必须是:
while (item.SubItems.Count > 1)
item.SubItems.RemoveAt(1);
关于c# - 为什么 SubItems.Clear() 也会删除 Name 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4097912/
sidebarMenu 中的 MenuItem 有问题。当我添加第三个 MenuItem (RFM) 时,它似乎在 ui 中呈现为子项,当我单击该项目时,即使在服务器中也没有显示任何内容。R 有相应的
在我的项目中,我想要一个表,其中的项目可能有子项目,就像在 Eclipse 的“问题” View 中一样。 (索引2-17应该是1的子项) 到目前为止我的项目: Overview of my Proj
我需要在发布弹出窗口中隐藏“发布子项目”吗?由于我的内容层次结构中有大量内容(超过 100 万),因此尝试发布带有子项目的项目将行不通。 最佳答案 您可以覆盖 sitecore\shell\Appli
我尝试使用 CSS 为 Wordpress 模板创建下拉菜单。当我将鼠标悬停在菜单项上时(例如,您可以在图片上看到的“Cupcake Ipsum”),整个菜单以一种奇怪的方式显示。 我希望这张图片是不
我想知道如何在 ListView 子项中添加图像。 我正在使用此代码在子项中显示文本。 double Text = "2452"; ListViewItem lItem = new ListVie
我生成了一个 Excel 表,其中包含格式如下的数据: IOW、“总包”、“总购买”、“平均价格”和“总百分比”值位于它们自己的列(数据)中,用于每个总体(或侧面)描述。 当我对这些数据进行数据透视表
我正在使用 Grails 1.1 和导航插件 1.0.4,但刚刚遇到了一个问题。我希望将来自 3 个不同 Controller 的操作作为子项贡献给来自不同 Controller 的菜单。 我看到的所
我有一个带有子项目菜单的选项菜单 当我单击选项菜单时,我的应用程序崩溃,但无法解密日志 我想要一个选项按钮来打开 3 个选项菜单子(monad)项 我检查了一些教程,但我看不出我错在哪里
是否可以将 ListView 中的项目显示为一种颜色,而将其子项目显示为另一种颜色? 我正在创建一个游戏(乘法表问答游戏),其中用户给出的问题和答案以及正确答案都被转移到 ListView 中。例如:
我需要重现我们可以在 forbes.com 上找到的那种菜单。我只对 Logo 项子菜单感兴趣。我就快完成了。我制作了 Logo 元素菜单,带有类别名称的第一级菜单和显示每个类别的文章链接的第二级菜单
我正在尝试将两个列添加到 ListView 中,一个用于某些内容,一个用于其他内容,但它不会让我选择子项目,只有原始项目是否可以在不使用整行选择的情况下解决这个问题?我还必须能够从 txt 文件加载项
我在任何地方都找不到将子项目添加到我的可扩展列表的说明。我只能找到 50 个关于如何更改背景颜色的问题。 现在,我正在使用这段代码来创建一个普通的 ListView : public String
我在详细信息模式下使用 WinForms ListView(.NET 4.0,在 Windows 7 上运行)并且我有一个函数需要清除特定项目中的子项目。不幸的是,当我这样做时,它也清楚了名字: it
我希望左侧导航栏中的子项始终展开,请参见此处: http://i.imgur.com/lScAPXf.png 但即使我点击箭头,当时也只有一项展开。单击不同的箭头时,打开的元素将关闭。由于我的菜单非常
我有一个包含 2 列的 ListView ,当我双击一个项目时,我需要在 TextBox 控件中显示其相应子项目的值。我该怎么做? 我搜索了 Google,但没有返回任何有用的信息,可能是因为我不确定
如果您在运行时在现有列之间添加新列,则子项索引不会像我想象的那样。 例如在第二列和第三列之间添加新列后,列/子项如下所示: colums[0] | colums[1] | (new) colu
如果您将ownerdraw与TListView一起使用,则对于自定义绘制的子项之后的所有子项,即使listview font.style设置为[],子项默认情况下都是粗体字体样式。 我发现的解决方法是
我正在构建一个下拉菜单。问题是,在 IE9 中,子绝对定位元素的背景仅在父元素内可见。您可以在其中看到菜单的页面:http://darkstar.weblunatix.net/stan/ddmenu
当我尝试从我的 wordpress API 中提取图像 source_URL 时,我得到 TypeError: Undefined is not an object (evaluating 'subi
我是一名优秀的程序员,十分优秀!