如何更改 datagridview 中列的文本方向?
How can I change text direction of a column in datagridview?
如何在不改变整个 datagridview 方向的情况下设置 datagridview 中特定列的文本方向? (我的意思是从右到左语言的文本方向改变,它与文本对齐不同)
您所说的功能不是直接可用的,但是您可以通过为该特定列设置格式字符串来实现它 [例如。 string.Format(...)] 在将数据绑定到 DataGridView 之前,无论您想要什么格式。
我没有这方面的完整示例,但它应该可以为该列创建一个 CellTemplate 并使用任何合适的 CultureInfo:
grdCheck.Columns[0].CellTemplate.Style = new DataGridViewCellStyle{FormatProvider = CultureInfo.CurrentCulture};
我知道这不是最佳答案,但我暂时处理了 CellPainting
事件以更改该特定列的文本方向:
(在我的示例中,datagridview 是从右到左,我将第 5 列标记为从左到右方向绘制)
Public Sub DGV_CellPainting(ByVal sender As Object, ByVal e As DataGridViewCellPaintingEventArgs) Handles DGV.CellPainting
If e.ColumnIndex = 5 And Not Object.Equals(e.Value, DBNull.Value) Then
e.PaintBackground(e.CellBounds, False)
TextRenderer.DrawText(e.Graphics, e.Value, e.CellStyle.Font, e.CellBounds, e.CellStyle.ForeColor, e.CellStyle.BackColor, (TextFormatFlags.Left Or TextFormatFlags.HorizontalCenter Or TextFormatFlags.VerticalCenter) And (Not TextFormatFlags.RightToLeft))
e.Handled = True
End If
End Sub
但我仍然在寻找更舒适的 trick/solution 来执行此操作,因为此解决方案在编辑文本时仍然缺乏,而且处理绘画事件也没有像我预期的那样显示非常漂亮的结果。
如何在不改变整个 datagridview 方向的情况下设置 datagridview 中特定列的文本方向? (我的意思是从右到左语言的文本方向改变,它与文本对齐不同)
您所说的功能不是直接可用的,但是您可以通过为该特定列设置格式字符串来实现它 [例如。 string.Format(...)] 在将数据绑定到 DataGridView 之前,无论您想要什么格式。
我没有这方面的完整示例,但它应该可以为该列创建一个 CellTemplate 并使用任何合适的 CultureInfo:
grdCheck.Columns[0].CellTemplate.Style = new DataGridViewCellStyle{FormatProvider = CultureInfo.CurrentCulture};
我知道这不是最佳答案,但我暂时处理了 CellPainting
事件以更改该特定列的文本方向:
(在我的示例中,datagridview 是从右到左,我将第 5 列标记为从左到右方向绘制)
Public Sub DGV_CellPainting(ByVal sender As Object, ByVal e As DataGridViewCellPaintingEventArgs) Handles DGV.CellPainting
If e.ColumnIndex = 5 And Not Object.Equals(e.Value, DBNull.Value) Then
e.PaintBackground(e.CellBounds, False)
TextRenderer.DrawText(e.Graphics, e.Value, e.CellStyle.Font, e.CellBounds, e.CellStyle.ForeColor, e.CellStyle.BackColor, (TextFormatFlags.Left Or TextFormatFlags.HorizontalCenter Or TextFormatFlags.VerticalCenter) And (Not TextFormatFlags.RightToLeft))
e.Handled = True
End If
End Sub
但我仍然在寻找更舒适的 trick/solution 来执行此操作,因为此解决方案在编辑文本时仍然缺乏,而且处理绘画事件也没有像我预期的那样显示非常漂亮的结果。