选择后ListViewItem文本被截断-紧凑框架

7

我有一个带有一些ListViewItems(只有文本)的ListView

listView1 = new ListView
{
    View = System.Windows.Forms.View.Details,
    HeaderStyle = ColumnHeaderStyle.None
};


listView1.Columns.Add(String.Empty, -2, HorizontalAlignment.Left);

以下是示例图像: enter image description here 问题在于当我选择其中一个项目时,文本会被截断,就像下面的图片一样: enter image description here 为什么?我该如何解决这个问题?

这可能是由于列宽设置为-2引起的吗?您有特定的原因这样做吗? - Martin
ColumnHeader header;header.Width 属性设置为其他值可能会有所不同,可以在 SelectionChanged{} 中添加代码 (header.Width = listView.SelectedItem(0).Length;) - plast1K
@MartinParkin -2 是因为我想让该列占据所有可用空间(没有竖线)。 - Nick
紧凑框架的版本是什么?目标平台是什么(WinCE、WinMo等)? - ctacke
@ctacke 紧凑框架 3.5 和 Windows Mobile 6.1 - Nick
5个回答

1
问题在于你的ListViewItem的文本以空格结尾。你需要使用TrimEnd函数将字符串去掉空格,这样就能解决问题了。

0

设置以下内容可能会有所不同:

ColumnHeader header; 

然后,将header.Width属性更改为其他值,或许可以将其放入...

SelectionChanged{}(  
    header.Width = listView.SelectedItem(0).Length;
)

试一试。我只是在想标题/列宽度可能会对默认设置产生影响,或者你可能使用了-2进行了设置。

这个链接可能有助于ColumnHeaders:MSDN ColumnHeaders


编辑:

我已经审查了一些CompactFramework的东西。

这个链接似乎与同样的问题有关。

尝试将您的ColumnWidth属性设置为-1

listView1.Columns.Add(String.Empty, -1, HorizontalAlignment.Left);

这应该将其设置为列中最宽的值。我确实看到-2选项应该有效,但请尝试-1,只是为了看看是否有区别。

双重编辑:

我们的评论已被移动到聊天/讨论中,尽管我们无法弄清楚是什么原因导致了这种情况。如果有人有建议或知道解决方法,请告诉我们!


哦,不!嗯,那很遗憾,我会看看能否找到其他的东西,应该意识到它是为Compact设计的。 - plast1K
列是在什么时候设置的?它们是在运行时还是之后设置的?听起来编译器在错误的时间设置了它们,要么是在需要它们之前,然后数据被放置但没有被调整大小,要么是在“运行时”之后,列以固定大小初始化(默认值,因为尚未添加任何值),然后添加值,但大小保持不变。 - plast1K
我在UserControl的构造函数中添加了包含ListView的列。该列的标题是一个空字符串。 - Nick
听起来应该可以解决问题,因为构造函数会构造...你尝试将String.Empty设置为Imagine了吗?我知道你想要根据需要动态添加列,但我认为String.Empty可能会干扰。检查一下当你硬编码出现问题的列时会发生什么。如果在选择时没有截断它,那就是String.Empty的问题。 - plast1K
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/26565/discussion-between-plast1k-and-nick - plast1K
显示剩余2条评论

0
请使用以下列大小逻辑:
listView1.Columns[0].Width = listView1.Width;

请告诉我们这是否有效!如果您知道为什么会修复它,也请告诉我们 :] - plast1K
我的程序出了问题,我不知道为什么在SelectionChanged事件中listView1.Columns[0].Width的值是460(而不是-2)。我的listView1.Width是464,所以如果我在事件中添加这段代码,我可以看到水平滚动条,但文本仍然被截断。 - Nick

0

您应该能够手动更改列的宽度。进入设计模式并手动更改它。只需拖动即可。


问题不在于列宽(它始终保持不变)。 - Nick

0

你能检查一下选定项的样式吗?
选定项的Textwrapping属性是否为“Wrap”或者选定项列宽是否增加。 我认为问题只存在于这两个方面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接