web-dev-qa-db-ja.com

WinformsでDataGridView列ヘッダーを右揃え

DataGridViewwinformsコントロールに「QuotePrice」という列名があります。 「単位」などのスペースを使用せずに列を右揃えにすることはできますが、「見積価格」と呼ばれる列名に列ヘッダーを右揃えにすることはできません。 TopRight、MiddleRight、bottomRightを使用しようとしましたが、成功しませんでした。

SelectedAdditionalCost.Columns["Quote Price"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight; // Doesn't want to right align
SelectedAdditionalCost.Columns["Quote Price"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; // column contents No worries, right aligns.

私は本当にばかげたことをしていると確信していますが、これを機能させることはできません。

14
Richard

以下を書いているときに、問題の可能性があることに気付きました。DataGridView列の名前にスペースを含めることはできません。列名ではなく、ヘッダーテキストで列コレクションを参照しています。ただし、例のようにコードを実行しようとすると、ランタイムエラーが発生します(null参照例外)。

とにかく、それはさておき:

あなたが持っているコードは私にとって完璧に機能します、私は私のdatagridviewテストプロジェクトの1つ(コンストラクター内)に以下を実装し、ヘッダーテキストは右揃えになります:

dataGridView.Columns[1].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
dataGridView.Columns[2].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;

ヘッダーテキストのスペースについて言及したため、列2のテキストにはスペースが含まれていました。

私が言及したことの1つは、並べ替えグリフがセルの余白に完全に整列するのを妨げているときに、ヘッダーテキストが正しく整列していないように見える可能性があることです。

これが違いを生むかどうかを確認します。

dataGridView.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable;
25
David Hall

1つずつ行うのではなく、そのようにすべての列ヘッダーを揃えることができます。

//MiddleRight Alignment for DataGridView Column Headers
DataGridViewCellStyle colHeaderStyle = new DataGridViewCellStyle();
colHeaderStyle.Alignment= DataGridViewContentAlignment.MiddleRight;
..... some other styles (like color, font etc) .........
dataGridView_custom.ColumnHeadersDefaultCellStyle = colHeaderStyle;

VB回答 から取得した参照、OKとしてテスト。

1
Avishek