フォームアプリケーションのフラットデザインについて

タグの編集
投稿者 SSD  (社会人) 投稿日時 2022/11/17 09:30:07
最初に.NET frameworkのフォームアプリケーションを選択して開始したプロジェクトとそうでないプロジェクトがあり、両者の参照設定は同じにしています。
前者はボタンなどに凹凸がなく(フラットデザイン)、後者は凹凸がある状態です。
後者も前者と同様にフラットデザインにしたいのですが、どこで設定すればよいのでしょうか?
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2022/11/17 11:34:10
VB.NET だとしたら、プロジェクトのプロパティを開いて、
アプリケーションの種類を「Windows アプリケーション」にした後、
  「アプリケーション フレームワークを有効にする」
  「XP Visual スタイルを有効にする」
の 2 つが on/off いずれになっているかを確認してみてください。

アプリケーション フレームワークを用いていない場合や、C# などのプロジェクトの場合は
スタートアップとなる Main プロシージャー内において、Form がロードされるよりも前に
Application.EnableVisualStyles() メソッドおよび
Application.SetCompatibleTextRenderingDefault が
明示的に呼びだされているかを確認してみてください。

投稿者 SSD  (社会人) 投稿日時 2022/11/17 14:45:56
魔界の仮面弁士 様

言語はVisualBasicです。
後者のプロジェクトというのが単体テストプロジェクトです。
ターゲットフレームワークは .NET Framework  4.7.2で、
アプリケーションの種類をWindowsフォームアプリケーションにし、
  「アプリケーション フレームワークを有効にする」
  「XP Visual スタイルを有効にする」
の2つがONであることも確認しましたが、フラットデザインになっていませんでした。

具体的にはテストプロジェクトにボタンとテキストボックスだけを配置したフォームを作り、
テスト用のプロシージャからそのフォームとメッセージボックスを表示しましたが、
双方ともコントロールの凹凸が目立つ古いデザインでフラットデザインにはなっていませんでした。

以前空のプロジェクトからフォームを作成したときもフラットデザインにならなかった記憶があります。
その時も上記2点のチェックを確認しONにしましたがデザインは変更されませんでした。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2022/11/17 19:16:46
> 後者のプロジェクトというのが単体テストプロジェクトです。

自作テスターの場合は、「単体テスト DLL を呼び出す側 の EXE」で、
Application.EnableVisualStyles() を呼び出しておく必要があります。
「テスターによって起動される EXE」では無い事に注意。

既存のテスター(VSTest.Console.exe とか、VS のテスト エクスプローラーなど)で、
呼び出し元の処理を編集できないようなケースでは、ちょっと無理矢理ですが、単体テストクラスの
Shared Sub New() にて Application.EnableVisualStyles() を呼んでおくという手もあります。
投稿者 SSD  (社会人) 投稿日時 2022/11/19 11:31:27
魔界の仮面弁士 様

テストプロジェクトでテスト用プロシージャを記述したクラスにコンストラクタを記述し、その中でApplication.EnableVisualStyles()を呼び出したところいけました!
ありがとうございます。