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 内の特定のセルが 1 つだけの場合は、セル コンテンツの先頭に非表示のRTL 文字(U+200F) を挿入してみてください。
そのようなプロパティは存在しません。コントロール全体のRightToLeft
プロパティを設定する必要があります。
プロパティを悪用してテキストを右揃えにしようとしていると思われます。カスタム書式設定ではなく、右から左へのフォントを使用するロケールのサポートを有効にすることを目的としています。
フォーマットを変更することが目的の場合、それぞれDataGridViewCell
にclassのインスタンスを受け入れる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;
}
}