如何RightToLeft
为 DataGridViewColumn 中的特定 DataGridViewCell 设置属性?
5 回答
我知道这是一个老问题,但正如其他人所说,DataGridViewCell
并DataGridViewColumn
没有RightToLeft
财产。但是,有解决此问题的方法:
处理
CellPainting
事件并使用TextFormatFlags.RightToLeft
标志:private void RTLColumnsDGV_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { if (e.ColumnIndex == RTLColumnID && e.RowIndex >= 0) { e.PaintBackground(e.CellBounds, true); TextRenderer.DrawText(e.Graphics, e.FormattedValue.ToString(), e.CellStyle.Font, e.CellBounds, e.CellStyle.ForeColor, TextFormatFlags.RightToLeft | TextFormatFlags.Right); e.Handled = true; } }
(代码取自CodeProject 问题。)
如果它只是 DGV 中的一个特定单元格,您可以尝试在单元格内容的开头插入不可见的RTL 字符(U+200F)。
不存在这样的属性。您需要设置整个控件的RightToLeft
属性。
我怀疑您正试图滥用该属性来正确证明您的文本。它旨在支持使用从右到左字体的语言环境,而不是自定义格式。
如果更改格式是您的目标,则每个DataGridViewCell
都有一个接受类实例的Style
属性。您可以将其属性设置为“MiddleRight”,以将单元格的内容垂直居中对齐,水平居右对齐。有关详细信息,请参阅:如何:格式化 Windows 窗体 DataGridView 控件中的数据。DataGridViewCellStyle
Alignment
要对整个列执行此操作,请使用
dataGridView.Columns["column name"].DefaultCellStyle.Alignment = DataGridViewAlignment.MiddleRight;
尽管我相信单个单元格的样式会覆盖这一点。
就如此容易:
DataGridView1.Columns["name of column"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
我知道这是一篇相当老的帖子,但很多时候我发现旧帖子的答案同样有助于为我指出解决方案,所以无论如何我都会发布我的解决方案。
我通过处理 datagridview 的 EditingControlShowing 事件来做到这一点。解决这个问题时让我失望的一件事是我试图在 datagridviewcell 中查找属性 RightToLeft,但这是 Textbox 的属性。
private void MyDataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
TextBox currentCell = e.Control as TextBox;
if (currentCell != null
&& myDataGridView.CurrentCell.ColumnIndex == NameOfYourColumn.Index) //or compare using column name
{
currentCell.RightToLeft = RightToLeft.Yes;
}
}