我正在尝试实现一个单元格宽度小于 autosize 的 DataGridView。如果您仔细查看自动调整大小的单元格,您会注意到仍有一些空间未用于实际显示单元格的内容。
这就是为什么我开始自己测量内容的宽度TextRenderer
,然后手动设置列的宽度。
最初的问题是“A”在单元格实际“填充”之前很久就显示为“A...”。原因被cell.Style.WrapMode
设置为“nonSet”。我很高兴这DataGridViewTriState.True
确实适用于那个“A”示例。
但现在我刚刚注意到,如果字符串有多个单词(“A,B”),DataGridView 会在单元格实际“填充”之前很久尝试将内容显示到几行。
我现在正在寻找的要么是删除单元格内容的“填充”,要么是完全抑制某个单元格/列上的自动换行(= 没有截断字符串的单行)。
此外,我应该承认该字符串上没有隐藏的空白,因此修剪根本没有效果。
编辑: 我偶然发现了一些同事的代码,这些代码似乎与我正在搜索的内容相似。
StringFormat format = new StringFormat(StringFormatFlags.NoClip);
文档说字符串周围有一些比字符串本身大的矩形。如果矩形伸出可写区域,则字符串被换行。该代码片段抑制了该(默认)行为。
唯一的问题是这个解决方案似乎只适用于绘制字符串。我没有找到将 stringformat 对象分配给字符串的可能性。