2010-12-29 26 views
11

私は奇妙な問題があります。それはおそらく簡単な修正ですが、多くの研究の後で解決策を見つけることができません。DataGridViewの列に見出しの中心を合わせるにはどうすればよいですか?

私はDataGridViewを持っていますが、その上に列の見出しを中央に配置しようとしていますが、その結果はセンタリングの左寄りになります。私はこの問題に関するいくつかの記事を1つまたは2つのサイトで見たことがありますが、決して解決策はありません。何かご意見は?

は、ここで私は現在、使用しようとしているの文です:

DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 

答えて

21

あなたが投稿したコードが正しい軌道に乗っている:あなたはDataGridViewコントロールのColumnHeadersDefaultCellStyleプロパティを設定する必要があります。

はしかし、あなたは新しいDataGridViewCellStyleクラスを作成し、ColumnHeadersDefaultCellStyleプロパティにことを割り当てる必要があります。DataGridViewCellStyleクラスをこのプロパティに割り当てていない限り、コードサンプルが示すようにAlignmentプロパティを変更することはできません。

したがって、たとえば、次のコードは、空のプロジェクトに完全に中央列見出しを実現:将来的には

Dim dgvColumnHeaderStyle As New DataGridViewCellStyle() 
dgvColumnHeaderStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 

myDataGridView.ColumnHeadersDefaultCellStyle = dgvColumnHeaderStyle 

  DataGridView with centered column headings


、あなたはそれが簡単にこれらの種類を行うことかもしれませんデザイナーからのもののコードを使用して自分自身で行う必要がある場合は、作成されたファイル*.Designer.vbを確認して、それがどのように行われたかを確認できます。


EDIT:私はちょうど今、あなたはを参照している列-それは確かに各ヘッダーの右側にあるふくよかを作成しないわずかなオフセットに気づきました。しかし、バグではありません。はるかに簡単な説明があります。

ListViewと同様に、DataGridViewは列単位のソートをサポートしています。したがって、各列ヘッダーは、中央揃えを計算するときにソートグリフ(通常は矢印)を表示するのに十分な領域を確保します。

を完全ににするには、並べ替えを無効にする必要があります。列のSortModeプロパティを "NonSortable"に設定します。これにより、列テキストが中央または右揃えになるたびにソートグリフ用にスペースが予約されないようにする必要があります。

+2

を使用することができますが、あなたの迅速な対応をありがとうございました。私が気づいたのは、同じ左寄りを得ていることです。見出しのそれぞれは、あまり集中していません。私はバグを示すように見えるいくつかの情報を読んでいますが、各見出しには空白がいくつか埋め込まれている必要がありますが、明らかに見出しの長さによって異なります。それは、テキストの前に追加される約2.5%のパディングに見えます。明らかに、それは解決策のようには聞こえません。私はこれをいくつかの方法で試し、同じことを続けています。不思議ですね? – Keith

+0

ところで、2。5%は列の全幅のうちの1つです。 – Keith

+0

@Keith:私はちょうどあなたが話していることに気づいた。それは面白いです、私はこれまで何の注意も払っていません。そして、私の友人のすべてがOCDと呼んでいます。私はいくつかの新しい洞察力で私の答えを更新しました。 –

1

あなたが列ヘッダのテキストの任意の他の整列スタイルを中央または使用したい場合は、この

dgvResults.Columns("ColumnName").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter 
関連する問題