C# 如何在DataGridViewCell中设置字符串的方向?

C# 如何在DataGridViewCell中设置字符串的方向?,c#,.net,winforms,datagridview,datagridviewcolumn,C#,.net,Winforms,Datagridview,Datagridviewcolumn,如何为DataGridViewColumn中的特定DataGridViewCell设置RightToLeft属性?此类属性不存在。您需要设置整个控件的名称 我怀疑你试图错误地使用这个属性来证明你的文本是正确的。它旨在支持使用从右向左字体的区域设置,而不是自定义格式 如果更改格式是您的目标,则每个DataGridViewCell都有一个接受的实例。您可以将其设置为“MiddleRight”,以使单元格内容在中间垂直对齐,在右侧水平对齐。有关更多信息,请参阅:。要对整个列执行此操作,请使用 data

如何为DataGridViewColumn中的特定DataGridViewCell设置
RightToLeft
属性?

此类属性不存在。您需要设置整个控件的名称

我怀疑你试图错误地使用这个属性来证明你的文本是正确的。它旨在支持使用从右向左字体的区域设置,而不是自定义格式


如果更改格式是您的目标,则每个
DataGridViewCell
都有一个接受的实例。您可以将其设置为“MiddleRight”,以使单元格内容在中间垂直对齐,在右侧水平对齐。有关更多信息,请参阅:。

要对整个列执行此操作,请使用

dataGridView.Columns["column name"].DefaultCellStyle.Alignment = DataGridViewAlignment.MiddleRight;

虽然我相信单个单元格的样式将覆盖此问题。

我知道这是一个老问题,但正如其他人所说,
DataGridViewCell
DataGridViewColumn
没有
RightToLeft
属性。但是,这个问题有一些解决办法:

  • 处理事件并使用标志:

    (代码取自。)

  • 如果DGV中只有一个特定单元格,则可以尝试在单元格内容的开头插入不可见(U+200F)


  • 就这么简单:

    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;
            }
        }
    

    我需要为Cell设置方向而不是对齐,这意味着什么?我不确定我是否理解这种区别。正如我的回答所解释的,您不能为单个单元格设置RightToLeft属性;它只适用于整个控件。它是为使用从右向左字体的区域设置而设计的,在这种情况下,屏幕上的所有内容都需要从右向左,而不仅仅是一个特定的单元格。“方向”与“对齐”有何不同?(我知道这很古老)使用从右到左的字体并不意味着屏幕上的所有内容都需要从右到左。例如,您可以有一个DataGridView,它显示不同语言中单词的翻译。显示RTL语言的列应显示为RTL。似乎在使用.net DataGridView实现此功能时,必须将单元格字体设置为RTL,并将CellStyle.Alignment设置为DataGridViewContentAlignment.MiddleRight。(虽然使用mono winforms似乎不起作用)这是否回答了您的问题?如果一个人不想做定制绘画,这个答案中的第二点是最好的选择。与其他答案不同,设置单元格的对齐方式与将其方向设置为RTL不同。
    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;
            }
        }