ゲームエフェクトデザイナーのブログ (新)

レポート記事とかUE4のマテリアルとか。C#とかも触ったり。

C# DataGridViewの表示がおかしくなった時の対処法

Visual StudioDesigner(デザイナ)を使用して DataGridView を作成&編集していると、DataTableの列ヘッダー情報を更新しても表示に反映されなかったり、突然 DataGridView そのものが表示されなくなったり、列ヘッダーをクリックして昇順・降順ソートをした際の▼マーク(グリフ)が表示されなくなったりと、表示の不具合が色々と起こります。

DataGridViewコントロールやプロパティを全てコードで記述している場合には起こらない、Designer使用時ならではの不具合のような気がします。

そんな時の対処方法についてメモっておきたいと思います。

 

DataTableの更新が反映されない場合


まずDataGridView右上の▼メニューからDataTableをバインドしている状態で、DataTableの情報を後から変えた際(列を追加するなど)に、表示に反映されない場合‥

▼メニューで一度DataTableのバインドを解除してから、再度同じDataTableBidingSourceを選択して登録し直すと反映されるようになります。

むしろそうしないと表示が更新されません。

しかし、そうすると列ごとのスタイルをまた設定し直しになるので勘弁願いたいものです。。
(もし他に方法がありましたらコメント等で教えていただけるとありがたいです!)

作業していたらDataGridViewが表示されなくなった場合


何がきっかけかは分かりませんが、DataGridViewコントロールを配置している外観(Form1[デザイン]とか)を確認しようとしたらいきなり「フォームが消えている!(エラーは出ない)」ということがたまにあります。

その場合はあわてずプロジェクトを保存していったん終了し、再度開き直したら直ります。

列ヘッダーをソートした際のグリフが表示されない


デフォルト設定では、DataGridViewの列ヘッダーをクリックする度に、自動で昇順ソート・降順ソートが切り替わりますが、その際にヘッダーテキスト横に三角マーク「▼」「▲」が表示されます。

これを「グリフ」と呼ぶみたいですが、なぜか表示されないことがあります。

そういう場合はDesigner

上でDataGridViewコントロールを選択して、プロパティパネルの「表示>ColumnHeadersDefaultCellStyle」の「...」をクリックして、Alighnment や WrapModeを デフォルトから変えていたらデフォルトに戻してから実行してみてください。

私はこれで表示されるようになりました。

表示されたらまた「ColumnHeadersDefaultCellStyle」の設定を元に戻しておくと良いです。それでちゃんと表示されるようになります。

謎です。。

2018.10/24追記:この方法でも表示されなくなりました‥
2018.12/24追記:ColumnHeadersDeafaultCellStyleでメイリオを使用しているとグリフが消えるようです‥