如何隐藏 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】:

您可以将ListViewHeaderStyle 成员设置为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 列标题?的主要内容,如果未能解决你的问题,请参考以下文章

颤振键盘隐藏嵌套列表视图中的文本字段

winform listview控件容器控件

如何检查 ListView 项目是不是被选中

BlackBerry Cascades:如何将数据加载到 ListView

Flutter - 如何在 Listview 构建器顶部添加项目?

毕业设计:HomeFragment