当单元格内容被截断时,在VB.Net DataGridView中将三个点(省略号)(…)更改为自定义字符

当单元格内容被截断时,在VB.Net DataGridView中将三个点(省略号)(…)更改为自定义字符,vb.net,datagridview,cell,truncate,Vb.net,Datagridview,Cell,Truncate,我正在用VB.Net开发一个项目,我正在使用古吉拉特字体(非Unicode) 我放置了一个DaraGridView(DGV)并在DGV中显示存储在数据库中的数据 在DGV中,如果单元格内容被截断,DGV将显示椭圆(三个点)(…);但当字体设置为古吉拉特字体时,它会显示古吉拉特字母表“ઈઈઈ" 而不是“因为古吉拉特人”ઈ“用英文“.”(点)字符编码 在古吉拉特字体中,可使用英文字符“p”生成“.” 那么,我怎样才能把省略号改成英文的“p”字呢?或者怎样才能把省略号完全去掉呢 我在2010年8月31

我正在用VB.Net开发一个项目,我正在使用古吉拉特字体(非Unicode)

我放置了一个DaraGridView(DGV)并在DGV中显示存储在数据库中的数据

在DGV中,如果单元格内容被截断,DGV将显示椭圆(三个点)(…);但当字体设置为古吉拉特字体时,它会显示古吉拉特字母表“ઈઈઈ" 而不是“因为古吉拉特人”ઈ“用英文“.”(点)字符编码

在古吉拉特字体中,可使用英文字符“p”生成“.”

那么,我怎样才能把省略号改成英文的“p”字呢?或者怎样才能把省略号完全去掉呢

我在2010年8月31日星期二下午1:33发现了berc的类似解决方案:

但我不确定这是否是实现这一目标的完美和/或唯一方法,它是否真的有效。 如果MSDN上面链接上的解决方案没有问题,我可以从中删除多少代码和/或需要更多代码才能使其完全工作?

您可以覆盖该事件:

Private Sub DGV_CellFormatting(ByVal sender作为对象,ByVal e作为System.Windows.Forms.DataGridViewCellFormattingEventArgs)处理DGV.CellFormatting
'检查空值
如果(e为Nothing)或(e.Value为Nothing),则返回
'抓取当前单元格
Dim C=DirectCast(发送方,DataGridView).行(e.RowIndex).单元格(e.ColumnIndex)
我不确定这是我的测试床还是什么,但我偶尔会在这里得到空值,所以检查一下
如果(C)为空,则返回
'测量绳子,如果合适,按原样使用

如果textrender.MeasureText(e.Value.ToString(),C.InheritedStyle.Font).WidthWow,效果很好,谢谢:)

现在DGV中有一些列使用英文字体。 因此,我插入了如下代码,以避免格式化某些特定的单元格

 'Grab the current cell

 Select Case e.ColumnIndex
 Case 0, 2, 3, 4, 14, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28
  Return
 End Select

 Dim C = DirectCast(sender, DataGridView).Rows(e.RowIndex).Cells(e.ColumnIndex)
 'Grab the current cell

 Select Case e.ColumnIndex
 Case 0, 2, 3, 4, 14, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28
  Return
 End Select

 Dim C = DirectCast(sender, DataGridView).Rows(e.RowIndex).Cells(e.ColumnIndex)