12

私は奇妙な問題を抱えており、それはおそらく簡単な修正ですが、多くの調査の結果、解決策を見つけることができないようです。

列見出しを中央に配置しようとしてDataGridViewいるのですが、結果として中央に左バイアスが発生します。これは、インデントの問題のようです。この問題に関するいくつかの投稿を1つか2つのサイトで見ましたが、解決策はありませんでした。何かご意見は?

これが私が現在使用しようとしているステートメントです:

DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
4

2 に答える 2

22

投稿したコードは正しい方向に進んでいます。コントロールのColumnHeadersDefaultCellStyleプロパティを設定する必要があります。DataGridView

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

たとえば、次のコードは、空白のプロジェクトで列見出しを完全に中央揃えにします。

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

myDataGridView.ColumnHeadersDefaultCellStyle = dgvColumnHeaderStyle

 列見出しが中央に配置された DataGridView


将来的には、デザイナーからこれらのタイプの操作を実行する方が簡単になる場合があります。コードを使用して自分で行う必要がある場合*.Designer.vbは、作成されたファイルをチェックして、どのように行われたかを確認できます。


編集:列で参照しているわずかなオフセットに気付きました。実際には、各ヘッダーの右側に少し余分なパディングが作成されます。ただし、これはバグではありません。もっと簡単な説明があります。

と同様にListView、 はDataGridView列による並べ替えをサポートしています。したがって、各列ヘッダーには、中央揃えを計算するときに並べ替えグリフ (通常は矢印) を表示するのに十分なスペースが予約されています。

列ヘッダーを完全に中央揃えにする場合は、並べ替えを無効にする必要があります。SortMode列のプロパティを「NonSortable」に設定します。これにより、列のテキストが中央揃えまたは右揃えの場合に、並べ替えグリフ用にスペースが予約されるのを防ぐことができます。

于 2010-12-29T01:41:00.590 に答える
1

列ヘッダー テキストの中央揃えまたはその他の配置スタイルを使用する場合は、これを使用できます。

dgvResults.Columns("ColumnName").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
于 2016-06-04T05:02:06.087 に答える