【问题标题】:Adjusting header row color调整标题行颜色
【发布时间】:2021-01-05 14:24:36
【问题描述】:

我在我的项目中使用 objectlistview,在构造函数中我有这样的代码:

foreach (OLVColumn item in olv.AllColumns)
{
    item.Width = -2;
    var headerstyle = new HeaderFormatStyle();
    headerstyle.SetFont(new Font(new FontFamily("Segoe UI"), 12.0f, FontStyle.Bold));
    headerstyle.SetBackColor(Color.FromArgb(16, 16, 16));
    headerstyle.SetForeColor(Color.White);
    item.HeaderFormatStyle = headerstyle;
}

此代码为我的行提供了漂亮的背景色并设置了默认值。这有效,结果是这样的:

但在标题行的末尾是这样的:

与白色(默认)背景颜色有一个小间隙。我可以通过使类别列大小稍微大一点来解决这个问题,但允许用户隐藏和更改列的宽度,所以这不会解决我的问题。我怎样才能到达代码中的那个白点? 我检查了http://objectlistview.sourceforge.net/cs/recipes.html#how-do-i-change-the-font-or-color-of-the-column-headers,但找不到解决方案。

【问题讨论】:

  • 不确定我是否正确理解了您的问题,但有一个列属性FillsFreeSpace。当您将其设置为 true 时,相应的列会延伸以填充整个 OLV。那应该消除“差距”。
  • FillsFreeSpace 解决了这个问题,至少它隐藏了白色的无标题部分,但我更喜欢更改无标题部分的背景颜色,所以我不必强迫用户在整个列表视图中查看列,有没有办法为了它?
  • 我认为使用本机 OLV 功能是不可能的。但一个简单的解决方法是插入一个带有空标题文本的虚拟列作为最后一列,FillsFreeSpace 设置为 true
  • 这将是一个很好的解决方法,但是使用鼠标拖动进行多选呢?由于在类别之后的那个小部分中没有标题,我可以通过鼠标拖动选择多个项目。如果我按照您所说的那样用空列填充该空白,我将无法再通过鼠标拖动进行多项选择。另外,我不能将 FullRowSelect 设置为 false,因为我的第一列是图标列,因此如果我关闭 FullRowSelect,则选择变得非常难以处理。
  • 在 FullRowSelect 中选择最后一列真的有问题吗? IMO 它甚至看起来比截断的选择线更好。我明白你关于拖动选择的观点。如果你真的需要这个,你可能不得不在单击并按住 OLV 中的任意位置时尝试实现自己的拖动选择逻辑。

标签: c# objectlistview


【解决方案1】:

通过将属性FillsFreeSpace 设置为true,可以使列自动填充可用的水平空间。

如果不希望有一个主列延伸到总宽度,则可以插入一个将FillsFreeSpace 设置为 true 的虚拟列(带有空标题文本)作为最后一列。对于该列,可能建议将HideableIsEditable 设置为false

【讨论】:

    猜你喜欢
    • 2020-02-11
    • 1970-01-01
    • 2013-02-18
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多