
【C#】Windowsフォームアプリのダークモードフォーム
- お試しサンプルアプリDigital0 JPY
- プログラムソースDigital1,000 JPY

.NETのWindowsフォームアプリケーションのフォームをダークモードにしたサンプルアプリとソースです。言語はC#です。 こんな方にお勧めです。 ・タイトルバーを自由にカスタマイズしたい方 ・タイトルバーにボタンを配置したい方 ・Windowsフォームアプリケーションにダークモードを適用したい方
動作環境
Windows 10(64bit)で動作確認しています。 Microsoft Visual Studio 2022 で開発しています。 ランタイムに .NET 6.0 が必要です。
API リファレンス
https://tz-log.com/help/darkmodeform/
ブログ
タイトルバーを独自に実装してダークモードにしています。詳細は下記をご確認ください。 https://tz-log.com/cs-custom-titlebar-darkmode/
YouTube(アプリの動作イメージ)
V2.0.0から FormBorderStyle に FormBorderStyle.None を設定する方法でなく、クライアント領域を広げる方法に変更しました。 https://youtu.be/VHN3iUJ3efA
バグ・要望など
こちらからお気軽にどうぞ! https://tz-log.com/forums/
利用規約
個人・法人、営利・非営利にかかわらずご自由にご利用いただけます。一部のコードを利用を除き基本的にソースコードを公開される場合は、DLLにして公開してください。
更新履歴
■2023/11/06:v5.3.3 ・フォーム上のコントロールにフォームのテーマを適用できるようにした ・タイトルバーのコントロール配置パネルのサイズを自動に変更した ・カラーコンボボックスにシステムカラーとカラーコードでソートする機能を追加した ・その他軽微な修正 ■2023/09/09:v5.3.2 ・グループボックスを追加した ・フォーム上のコントロールにフォームののテーマを適用できるようにした ・テーマ名を変更した ・ShowInTaskbar するとウィンドウハンドルを再作成されテーマが反映されない問題を修正した ■2023/09/02:v5.3.1 ・FormBorderStyle を設定するとフォームサイズが大きくなる問題を修正した ・デザイナ時はカスタムタイトルバーを非表示にした ・フォームとコントロールのデフォルトのテーマを Windows 標準のライトモードに戻した ・その他軽微な修正 ■2023/08/27:v5.3.0 ・非アクティブの場合はタイトルバーを無効にした ・パネルとの組み合わせで作成していた TextBox、ListBox をユーザーコントロールに変更した ・ツールチップを DPI に対応した ・子フォームを DPI に対応した ・スクロールバーに ValueChaned イベントを追加した ・全体的にDPIを見直した ・その他軽微な修正 ■2023/07/24:v5.2.1 ・ShowInTaskbar を flase にするとフォームサイズが大きくなる問題を修正した ・フォームのデフォルトのテーマを Windows 標準のライトモードから自作ライトモードに変更した ・他のコントロールと相性が悪いのでタイトルバーのラベルを Label から Control を継承して作成するようにした ・バージョンダイアログを追加した ・その他軽微な修正 ■2023/06/04:v5.2.0 ・リストビューのヘッダカラムにダークテーマが反映されない問題を修正した ・タブオンリーコントロールを追加した ・その他軽微な修正 ■2023/02/26:v5.1.2 ・カスタムタイトルバーが不要なテーマの場合は非表示にするようにした ・デフォルトのテーマを Windows 標準のダークモードから標準のライトモードに変更した ・その他軽微な修正 ■2023/01/16:v5.1.1 ・コンストラクタでテーマ設定ができない問題を修正した ・その他軽微な修正 ■2023/01/14:v5.1.0 ・ツールチップを非アクティブでも表示するように変更した ・リストビューの同一グループヘッダーを複数描画する不具合を修正した ・リストビューのフッターと閉じるボタンを描画するようにした ・ステータスバーのグリップスタイルを選択可能にした ・フォントコンボボックスを追加した ・スクロールバーコントロールを追加した ・その他軽微な修正 ■2023/01/01:v5.0.0 ・タイトルバーを ToolStrip をやめて自作するようにした ・トグルボタンコントロールを追加した ・カラーコンボボックスコントロールを追加した ・リストビューを独自描画するようにした ・テーマにシステムと Office 2003 を追加した ・アクセントカラー機能を追加した ・その他軽微な修正 ■2022/12/03:v4.1.0 ・タブコントロールとチェックボックスとラジオボタンを独自描画でダークモード化した ・システムメニューをダークモード化した ・その他のコントロールのラベルクリックで各コントロールの有効、無効を切り替えるようにした ・メニューバーとツールバーのアイコンを .NET6.0 標準に変更した ・更新履歴を同梱した ・その他軽微な修正 ■2022/11/27:v4.0.5 ・スピンボックスが画面の外に出ると描画が乱れる不具合を修正した ・スピンボックスのテーマ設定をコントロールが表示されていない状態でも可能にした ・その他軽微な修正 ■2022/11/27:v4.0.4 ・リストビューのダークモードをオーナードローからカスタムドローに変更した ・スピンボックスが表示されていない状態でテーマ設定しても例外が発生しないようにした ・その他軽微な修正 ■2022/11/26:v4.0.3 ・スピンボックスコントロールをダークモード化しました ・その他軽微な修正 ■2022/04/26:v4.0.2 ・FixedToolWindow または SizableToolWindow の場合の閉じるボタンのサイズがDPI変更時に通常ボタンサイズになっていたのを修正 ・DLLのバージョンを正しくした ・その他軽微な修正 ■2022/04/26:v4.0.1 ・ウィンドウ最大化してシステムメニューの「移動」が選択できてしまう問題を修正 ・FormBorderStyle が FixedToolWindow または SizableToolWindow の場合、閉じるボタンだけを表示するようにした ・サンプルアプリも高DPIに対応した ・その他軽微な修正 ■2022/03/29:v4.0.0 ・.NET6に対応しました ・リストボックスなどその他のダークモードコントロールを追加しました ・ウィンドウを最大化してウィンドウの一番上をドラッグしたら移動できるようにしました ■2022/01/03:v3.2.1 ・特定条件で最大化できない問題の修正 ・他のコントロール(ボタン、チェックボックス、コンボボックス)のダークモードを追加 ※他のコントロールはハイコントラストテーマは未対応です ■2021/12/30:v3.2.0 ・Window標準のライト/ダークモードを追加 ・タイトルバーのボタンを「Segoe MDL2 Assets」フォントで描画するように修正 ・フォームのテーマを選択できるようにした ・その他軽微な修正 ※Window標準のライト/ダークモードの場合、タイトルバーへボタン追加することはできません ■2021/12/18:v3.1.4 ・ウィンドウサイズ変更なのに、移動してしまう不具合再修正(v3.1.3の修正漏れ) ・チェックマークを独自描画に変更 ・その他軽微な修正 ■2021/12/15:v3.1.3 ・VS2012テーマのオーバーフローボタンの色設定漏れを修正 ・ウィンドウサイズ変更なのに、移動してしまう不具合修正 ・その他軽微な修正 ■2021/12/12:v3.1.2 ・タスクバーが完全に非表示の場合、例外エラーになっていたのを修正 ・起動時のモニターの解像度で枠線を描画するように修正 ■2021/12/04:v3.1.1 ・タスクバーが非表示の場合の処理追加 ・フォーム名を TZForm に変更 ■2021/11/16:v3.1.0 ・ウィンドウの枠線を正しく描画していない不具合を修正(v3.0.1の修正漏れ) ・デザインモードで表示されるように修正 ■2021/11/15:v3.0.1 ・ウィンドウの枠線を正しく描画していない不具合を修正 ■2021/11/14:v3.0.0 ・アプリアイコンを変更した ・高 DPI に対応した ・DLL に変更した ・ウィンドウの上下の端をダブルクリックで上下に最大化するように修正 ・VS 系テーマを追加した ・その他細かい修正 ■2021/11/07:v2.3.0 ・.NET Framework 4.8 に変更 ・ウィンドウをドラッグで最大化するとボタン操作できなくなる不具合を修正 ・マルチモニターに対応 ・アプリアイコンクリックでシステムメニューを表示するように修正(ダークモードは未対応) ・その他細かい修正 ■2020/10/06:v2.2.1 ・ハイコントラストテーマを追加 ・ウィンドウ枠を色設定できるように変更 ・ウィンドウを最大化すると、ディスプレイをはみ出していたのを修正 ・ステータスバーのグリップを独自に描画するように変更 ■2020/09/27:v2.2.0 ・非クライアント領域はタイトルバーのみ削除するようにしていたが、上下左右全ての非クライアント領域を削除するように修正 ・最大化からドラッグで元に戻した場合のチラつきを更に低減 ■2020/05/03:v2.1.1 ・デザイナでフォームを開くとエラーになっていたのを修正 ・アプリアイコンをダブルクリックで閉じるように修正 ■2020/02/16:v2.1.0 ・最大化からドラッグで元に戻した場合のチラつきを低減 ・最大化などのボタンをアイコンに変更 ■2020/02/01:v2.0.0 ・FormBorderStyle.None を設定する方法でなく、クライアント領域を広げる方法に変更した ・アニメーションなどウィンドウのビジュアルスタイルを残すように変更した ■2020/01/10:v1.1.0 ・タスクバーのアイコンクリックでウィンドウの最大化、最小化を可能にした ・ウィンドウを最大化した場合、タスクバーが隠れてしまう問題を修正 ■2020/01/06:v1.0.1 ・タイトルバーをダブルクリックしても最大化しない点を修正 ・不要なロジックを削除 ■2019/12/06:v1.0.0 ・公開