我在 WindowsForms 应用程序中有一个 DataGridView,其 RightToLeft 属性设置为 true (RightToLeft.Yes),因为 rtl 语言中的文本需要这样做。另一方面,数值应该从左到右书写。
但是您可能知道,我们不能为各个列设置不同的 RightToLeft 值。我想知道为什么这样一个被认为可用于大多数数据应用程序的重要控件不支持这个用于国际目的的基本功能。这是必需的
无论如何,我尝试根据要编辑的列的名称/数据类型在 EditingControlShowing 事件中更改 RightToLeft 属性:
private void grid1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
TextBox t = e.Control as TextBox;
if (t == null) return; //it is not a textbox editing column
DataGridViewColumn col = grid1.Columns[grid1.CurrentCell.ColumnIndex];
string columnName = col.Name;
if (Utility.IsNumericType(col.ValueType) || columnName.Contains("تاریخ")) //render as left-to-right
t.RightToLeft = RightToLeft.No; //setting RightToLeft property causes that cell values do not update after first cell edit!!!
else
t.RightToLeft = RightToLeft.Yes;
}
但这并没有按预期工作。设置 EditingControl 的 RightToLeft 属性会导致当您编辑单元格值时,在第一次单元格编辑后,每次更改下一个单元格值都会恢复为原始值!
我不明白为什么会这样?!