Visual Studio 2019 DataGridView SelectionModeに関して

タグの編集
投稿者 neko  (社会人) 投稿日時 2020/1/5 16:51:09
お世話になっております。
Visual Studio 2019のWindowsフォームアプリケーションを作成しています。
DataGridViewのSelectionModeプロパティに関して、
DataGridViewSelectionMode.FullRowSelectを指定した場合、行選択となりますが、
クリックしたセルの列ヘッダー色が反転してしまいます。
Visual Studio 2015以前は、このようにならなかったのです。
どのようにすれば回避できるでしょうか?
よろしくお願い致します。
投稿者 るきお  (社会人) 投稿日時 2020/1/5 17:54:00
試してみたところ、.NET Framework 4.7.2以上ではおっしゃるとおり、列ヘッダーが変化しますが、.NET Framework 4.7.1以前であればVisual Studio 2019でも列ヘッダーは変化しないようです。

.NET Framework を4.7.1に変更するというのが1つの解決策になると思います。
使用する.NET Frameworkのバージョンはプロジェクトのプロパティから変更できます。




.NET Framework 4.7.2でDataGridViewの仕様が少しだけ変更されています。この影響でしょうか。
https://docs.microsoft.com/ja-jp/dotnet/framework/migration-guide/retargeting/4.7.1-4.7.2

どうも、F3キーを押すとフォーカスがある列で並び替えを実行するという機能が追加されているようで、そのためどの列のフォーカスがあるのかを明示するようになったように思います。

この機能をオン・オフする手段があると良いのですが・・・。
投稿者 neko  (社会人) 投稿日時 2020/1/5 18:13:08
るきお様
お早いご回答ありがとうございます。
今まで、Frameworkのバージョンをあまり意識せず、常に最新を利用していました。
このような仕様変更があったのですね。
今後はFrameworkのバージョンにも意識を向けたいと思います。
大変勉強になりました。ありがとうございました!!
また、困った際は、何卒、よろしくお願い致します。
投稿者 るきお  (社会人) 投稿日時 2020/1/5 18:24:21
FormのLoadイベント等に次の記述を追加すれば、.NET Framework 4.8でもDataGridViewの動作が以前のバージョンに戻るようです。

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load

    AppContext.SetSwitch("Switch.UseLegacyAccessibilityFeatures"True)
    AppContext.SetSwitch("Switch.UseLegacyAccessibilityFeatures.2"True)
    AppContext.SetSwitch("Switch.UseLegacyAccessibilityFeatures.3"True)

End Sub


これは.NET Framework 4.7.1以降で追加されたすべてのユーザー補助機能を無効にします。

参考
https://docs.microsoft.com/ja-jp/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element
投稿者 neko  (社会人) 投稿日時 2020/1/6 18:21:03
るきお様
追加情報ありがとうございます。
なるほど、そのようにして、ユーザー補助機能を無効にすることもできるのですね。
重ね重ね感謝いたします!!