DataGridViewTextBoxCell、DataGridViewCell に対する AutoEllipsis (省略記号)の制御
Re[2]: DataGridViewセルでの省略記号を表示させないように
このリンク先によると DataGridViewTextBoxCell、DataGridViewCell には AutoEllipsis がないようです。
省略記号の非表示を行うサンプルコードが次のリンク先に載っています。
Re[4]: DataGridで...を表示しないようにするには?
ただし、このコードには、以下の問題があります。
・選択範囲内のアクティブ・セルの点線描画を行わない。
・TextRenderer.DrawText で文字列を描画すると、行セレクターの上に描画してしまうことがある。
グリッド・セルの省略記号については、次のリンク先にも情報がありました。
How to: Customize the Appearance of Cells in the Windows Forms DataGridView Control | Microsoft Docs
これを参考に上記の問題点を修正したものが以下のコードです。
Private Sub dgv_CellPainting(ByVal sender As Object, _ ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs _ ) Handles dgv.CellPainting If e.RowIndex > -1 Then Select Case e.ColumnIndex Case txtName.Index 'txtName はグリッドの列名 If e.Value Is Nothing Then Exit Sub End If '背景の描画 e.Paint(e.CellBounds, DataGridViewPaintParts.All And (Not DataGridViewPaintParts.ContentForeground)) 'テキストの色 Dim ForeColor As Color If (e.State And DataGridViewElementStates.Selected) <> 0 Then ForeColor = e.CellStyle.SelectionForeColor Else ForeColor = e.CellStyle.ForeColor End If Using ForeColorBrush = New SolidBrush(ForeColor) Dim StrFormat As New StringFormat() StrFormat.Trimming = StringTrimming.None StrFormat.FormatFlags = StrFormat.FormatFlags Or StringFormatFlags.NoWrap Select Case e.CellStyle.Alignment Case DataGridViewContentAlignment.BottomLeft, _ DataGridViewContentAlignment.BottomCenter, _ DataGridViewContentAlignment.BottomRight StrFormat.LineAlignment = StringAlignment.Far Case DataGridViewContentAlignment.MiddleLeft, _ DataGridViewContentAlignment.MiddleCenter, _ DataGridViewContentAlignment.MiddleRight StrFormat.LineAlignment = StringAlignment.Center Case DataGridViewContentAlignment.TopLeft, _ DataGridViewContentAlignment.TopCenter, _ DataGridViewContentAlignment.TopRight StrFormat.LineAlignment = StringAlignment.Near End Select Dim newRect As New Rectangle( _ e.CellBounds.X + e.CellStyle.Padding.Left, _ e.CellBounds.Y + e.CellStyle.Padding.Top + 2, _ e.CellBounds.Width - e.CellStyle.Padding.Horizontal - 2, _ e.CellBounds.Height - e.CellStyle.Padding.Vertical - 3) e.Graphics.DrawString(CStr(e.Value), _ e.CellStyle.Font, _ ForeColorBrush, _ newRect, _ StrFormat) End Using '描画処理を自分で行った場合は true e.Handled = True End Select End If End Sub