如何隐藏 ListView 列标题?
Posted
技术标签:
【中文标题】如何隐藏 ListView 列标题?【英文标题】:How To Hide ListView ColumnHeader? 【发布时间】:2012-02-17 20:09:59 【问题描述】:我正在努力找出正确的控件以用于包含表单中的预定义作业列表。我目前在 Predefined Job Name 组中有一个 ListBoxControl,它列出了船舶服务店的所有预定义工作(即换油、调整等)。然后,根据在我的 ListBox 中选择的项目(即作业名称),我需要显示与该作业对应的项目。例如,如果选择换油工作,我需要展示 4 夸脱机油、1 个机油滤清器、人工等......等等。
目前,当我加载表单数据时,我有一个 DAO,它使用 LINQ to SQL 从数据库中检索我的所有作业。然后我遍历结果并将作业名称放入 ListBox。我遇到的问题是 ListBox 项目没有像 ListView 项目那样的标签。因此,每次用户在 ListBox 中选择另一个项目时,我都必须执行另一个 LINQ 查询以再次从数据库中获取作业,以便我可以显示其对应的项目。如果我可以使用 ListView 并隐藏列标题,我可以在标签上设置整个作业,这样每次用户选择一个新项目时,我就可以访问详细信息,而无需再次调用数据库。有没有一种方法可以隐藏 ListView 的列标题而不隐藏整个列?
【问题讨论】:
如果应该显示表格数据,我会使用网格,我相信在 GridView 中您可以隐藏 HeaderRow。 您的View
模式设置为Details
。为什么不将其设置为List
?
【参考方案1】:
您可以将ListView
的HeaderStyle
成员设置为None
。
listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
【讨论】:
【参考方案2】:签出 ListView HeaderStyle 属性。它有以下选项:
-
无
不可点击
可点击
来自 MSDN:
HeaderStyle 属性允许您指定列标题是否可见,或者,如果它们可见,它们是否将用作可单击按钮。如果将 HeaderStyle 属性设置为 ColumnHeaderStyle.None,则不显示列标题,尽管 ListView 控件的项和子项仍然按列排列
【讨论】:
【参考方案3】:您还可以创建像ListItem
这样的简单对象,它有两个属性:Text
(字符串)和Tag
(对象)。然后实现 ListItem.ToString() ,你也可以在ListBox
中使用这些。
您还可以查看Better ListView Express 组件,该组件是免费的,允许在详细信息 视图中显示不带列的项目。与 ListBox 和 ListView 相比的优势在于其原生外观和许多额外功能。
【讨论】:
【参考方案4】:我发现如果你知道你没有显示标题,最好将 HeaderStyle 属性设置为 None,正如 Rajesh 上面提到的那样。
当屏幕最初加载时在 .CS 中设置时,会显示标题,直到屏幕完全呈现。
【讨论】:
【参考方案5】:简单的方法是使用ColumnWidthChanging
事件
private void listViewExtended1_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
if (e.ColumnIndex == 0)
e.Cancel = true;
e.NewWidth = listViewExtended1.Columns[e.ColumnIndex].Width;
【讨论】:
以上是关于如何隐藏 ListView 列标题?的主要内容,如果未能解决你的问题,请参考以下文章
BlackBerry Cascades:如何将数据加载到 ListView