【问题标题】:Do ListView columns have a max length they can display?ListView 列是否有可以显示的最大长度?
【发布时间】:2011-10-05 10:54:25
【问题描述】:

我遇到了一个奇怪的 ListView 问题,我会尽力解释它。我有一个包含 4 列的 ListView,最后一个是不同长度的消息字符串。如果 ListView 项包含某些关键字(失败、异常等),我有一些功能会将其更改为红色。

我第一次注意到这个问题时,一个项目是红色的,并且我在列中没有看到任何会触发红色着色代码的单词。因此,我将传入字符串的长度添加到该项目的前面,并添加了一个文本框,该文本框将在选择时显示该列的文本。我发现前置长度(传入字符串的实际长度)会像 953,提取的 ListViewItem 的文本长度会是 960(str 长度 + 前置长度信息),但是文本框长度中的文本是 253 ...

这里发生了什么?就像所有文本都进入 ListViewItem 但它不能/不会全部显示(不,它不是列宽,在上述情况下我将其设置为超过 1000)。

添加 ListViewItem 并检查错误字符串:

ListViewItem listItem = new ListViewItem(msg.Date);

// Add sub-items for Details view.
listItem.SubItems.Add(msg.Time);
listItem.SubItems.Add(msg.Thread);
listItem.SubItems.Add("L: " + msg.Message.Length + " " + msg.Message);                        

if (!msg.Message.Contains("FA_FAILCNT"))
{
    if (msg.Message.Contains("fail", StringComparison.OrdinalIgnoreCase) ||
        msg.Message.Contains("exception", StringComparison.OrdinalIgnoreCase) ||
        msg.Message.Contains("db q", StringComparison.OrdinalIgnoreCase))
    {
        listItem.Font = new Font(listItem.Font, FontStyle.Bold);
        listItem.ForeColor = Color.Red;
    }
    else
        listItem.ForeColor = Color.Black;
}

显然它是给我问题的最后一个子项(获得 msg.Message 的那个)

编辑: 废话,this explains it.... 有什么办法解决这个问题?

【问题讨论】:

  • 您需要发布一些代码和格式化的 HTML
  • 来自链接的文章:The ListBox control in" _ & " Visual Basic .NET offers an alternative in that" _ & " it now supports a horizontal scroll bar so that" _ & " the user can view all of the string when necessary." 这对你不起作用吗?
  • 老实说,我刚看了标题就失望了哈哈,好收获

标签: c# listview .net-4.0 listviewitem


【解决方案1】:

您已经找到了没有显示所有文本的原因。

到目前为止,我发现的最佳解决方案是将信息放在工具提示中,以便当用户将鼠标悬停在列上时可以看到整个字符串 - 请参阅 Listview subitem text is not shown fully in the UI eventhough the length of the text is correct

我看到这项工作的另一种方式是允许用户复制单元格的值。尽管显示的文本被截断,但将单元格值复制并粘贴到另一个应用程序中,您可以查看全文。

我想唯一的其他“解决方法”将涉及编写您自己的控件 - 或者我认为 WPF 中的 ListView 控件没有同样的限制。

【讨论】:

  • 谢谢!关于设置工具提示的任何指示?以前没玩过
  • @Hershizer33 抱歉,我也没有广泛使用它们,但我希望您应该能够在 Google 上找到大量信息。如果您遇到困难,请再问一个问题 - StackOverflow 上会有很多人能够提供帮助。
  • 是的,StackOverflow 非常棒,非常感谢您的帮助!
  • 你确定原生的Win32 ListView控件有这个限制吗?我以前从未遇到过,所以似乎不太可能。再说一次,我也不太可能尝试在单个子项中显示超过 270 个字符。这与用户友好相反。
  • @Cody ListView control can only display 259 characters per column 说是的,而且我之前在我们的一个内部工具中也看到过。
猜你喜欢
  • 2010-09-15
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-28
  • 2011-03-01
  • 1970-01-01
相关资源
最近更新 更多