Как я могу установить направление строки в DataGridViewCell? - PullRequest
3 голосов
/ 17 февраля 2011

Как установить свойство RightToLeft для определенного DataGridViewCell в DataGridViewColumn?

Ответы [ 5 ]

3 голосов
/ 17 января 2013

Я знаю, что это старый вопрос, но, как говорили другие, DataGridViewCell и DataGridViewColumn не имеют свойства RightToLeft.Однако для решения этой проблемы есть обходные пути:

  1. Обработайте событие 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 .)

  2. Если это только одна конкретная ячейка в DGV, вы можете попробовать вставить невидимую RTL символ (U + 200F) в начале содержимого ячейки.

2 голосов
/ 17 февраля 2011

Такого свойства не существует.Вам необходимо установить свойство RightToLeft всего элемента управления .

. Я подозреваю, что вы пытаетесь неправильно использовать свойство для выравнивания по правому краю.текст.Он предназначен для включения поддержки локалей, использующих шрифты справа налево, а не для пользовательского форматирования.

Если ваша цель - изменить форматирование, каждый DataGridViewCell имеет свойство Style который принимает экземпляр класса DataGridViewCellStyle .Вы можете установить для Alignment свойство значение «MiddleRight», чтобы выровнять содержимое ячейки по вертикали по центру и по горизонтали справа.Для получения дополнительной информации см .: Как: форматировать данные в элементе управления Windows Forms DataGridView .

1 голос
/ 17 января 2013

Все так просто:

DataGridView1.Columns["name of column"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
1 голос
/ 17 февраля 2011

Чтобы сделать это для всего столбца, используйте

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

Хотя я верю, что стиль отдельной ячейки переопределит это.

0 голосов
/ 13 мая 2015

Я знаю, что это довольно старый пост, но много раз я находил ответы на старый пост так же полезно, чтобы указать мне на решение, поэтому я все равно опубликую свое решение.

Я сделал это, обработав событие EditingControlShowing представления сетки данных. При решении этой проблемы меня оттолкнуло то, что я пытался найти свойство RightToLeft в datagridviewcell, однако вместо этого это свойство 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;
        }
    }
...