如何禁用 WindowsForms DataGridView 中单元格文本的省略号?
我在 .NET 3.5 (Visual Studio 2008) WinForms 应用程序中有一个处于只读模式的 DataGridView。
细胞的宽度非常小。 有些单元格包含一个短数字。 现在,即使使用小字体,有时也会用省略号显示数字。 例如“8...”而不是“88”。
有没有办法让文本流过标准 DataGridView 中的下一个单元格并避免省略号?
谢谢!
I have a DataGridView in readonly mode in a .NET 3.5 (Visual Studio 2008) WinForms application.
The cells' width is very small. Some of the cells contain a short number. Now, even with a small font, sometimes the number is shown with an ellipsis. For example "8..." instead of "88".
Is there a way to let the text flow over the next cell in a standard DataGridView and avoid the ellipsis?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
在设计器中更改 DataGridView 属性“RowDefaultCellStyle”-> 设置“换行模式”=“真”
In Designer change DataGridView Property "RowDefaultCellStyle" -> set "Wrap Mode" = "true"
处理 DataGridView 控件的 CellPainting 事件。
检查以下链接:
http://msdn.microsoft.com/en-us /library/hta8z9sz.aspx
请注意,当您绘制文本本身时,您需要自定义 StringFormat -
引用 MSDN 代码:
使用以下 StringFormat 对象而不是 StringFormat.GenericDefault :
问候
handle the DataGridView control's CellPainting event.
Check the following link :
http://msdn.microsoft.com/en-us/library/hta8z9sz.aspx
Note that when you draw the text itself you need to customize the StringFormat -
quote from the MSDN code :
Use the following StringFormat object instead of StringFormat.GenericDefault :
Regards
我发现 KD2ND 此处给出的解决方案并不令人满意。 对于如此小的更改完全重新实现单元格绘制似乎很愚蠢 - 处理列标题和列标题的绘制需要大量工作。 也选择了行。 幸运的是,有一个更巧妙的解决方案:
诀窍是让现有的“Paint”方法处理大部分单元格的绘制。 我们只处理文本的绘制。 边框是在文本之后绘制的,因为我发现否则有时文本会被绘制在边框上,这看起来很糟糕。
I found the solution given here by KD2ND to be unsatisfying. It seems silly to fully re-implement cell painting for such a small change - it's lots of work to handle painting of column headers & selected rows too. Luckily there is a neater solution:
The trick is to let the existing `Paint method handle the painting of most of the cell. We only handle painting the text. The border is painted after the text because I found that otherwise, the text would sometimes be painted over the border, which looks bad.
不,可能有一些属性可以禁用省略号(如果您访问底层控件),但标准 DataGridView 不支持流过(以及单元格合并)。
No, there's probably some property to disable the ellipsis (if you access the underlying controls), but flow over (and also cell merging) is not supported in the standard DataGridView.
一个可能对您有用的简单技术就是为有问题的单元格打开 WrapMode
A simple technique that might work for you is just to turn WrapMode for the cell in question