4

RightToLeftDataGridViewColumnで特定のDataGridViewCellのプロパティを設定するにはどうすればよいですか?

4

5 に答える 5

5

私はそれが古い質問であることを知っていますが、他の人が言ったように、プロパティを持っDataGridViewCellDataGridViewColumnいません。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 内の特定のセルが 1 つだけの場合は、セル コンテンツの先頭に非表示のRTL 文字(U+200F) を挿入してみてください。

于 2013-01-17T16:26:20.217 に答える
2

そのようなプロパティは存在しません。コントロール全体のRightToLeftプロパティを設定する必要があります。

プロパティを悪用してテキストを右揃えにしようとしていると思われます。カスタム書式設定ではなく、右から左へのフォントを使用するロケールのサポートを有効にすることを目的としています。

フォーマットを変更することが目的の場合、それぞれDataGridViewCellclassのインスタンスを受け入れるStyleプロパティがあります。そのプロパティを「MiddleRight」に設定して、セルのコンテンツを中央で垂直方向に、右側で水平方向に整列させることができます。詳細については、「方法: Windows フォーム DataGridView コントロールでデータをフォーマットする」を参照してください。DataGridViewCellStyleAlignment

于 2011-02-17T08:11:03.353 に答える
1

列全体でこれを行うには、次を使用します

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

個々のセルのスタイルがこれを上書きすると思いますが。

于 2011-02-17T08:15:03.053 に答える
1

それと同じくらい簡単です:

DataGridView1.Columns["name of column"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
于 2013-01-17T16:37:05.793 に答える
0

これがかなり古い投稿であることは承知していますが、解決策を示すのに役立つ古い投稿への回答を何度も見つけたので、とにかく私の解決策を投稿します.

これは、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;
        }
    }
于 2015-05-13T19:29:24.900 に答える