8.8K Views
June 04, 24
スライド概要
C# Tokyo イベントの発表スライド。
WinForms のダークモードと可変レイアウトについてです
mishizaki
WinForms の暗黒モード と可変レイアウト 【オンライン】Build 後! C# Tokyo イベント 石崎 充良 1 / 30
自己紹介 石崎 充良 ( @mishi_cs ) C# Tokyo コミュニティ管理メンバー GitHub: https://github.com/m-ishizaki blog: https://rksoftware.hatenablog.com/ 2 / 30
目次 • Microsoft Build 2024 • WinUI3 のダークモード • WPF、WinForms の今 (ダークモード) • でも WinForms って大変でしょう? 3 / 30
お詫び (今朝気が付きました……) core/release-notes/9.0/preview/preview4/wpf.md at main · dotnet/core (github.com) 4 / 30
Microsoft Build 2024 https://build.microsoft.com/en-US/sessions/b946ccb6-bb6b-4641-acc7-b5fadba2881e 5 / 30
新機能 6 / 30
新機能 すごい。本気で WinForms を今後も使っていってもらう 気なんだ……。本気なんだ。 というかダークモード対応してなかったんだ。 (まあ、WPF も対応してないんだけど) 7 / 30
WinUI3 の ダークモード 8 / 30
WinUI アプリの作り方 個別のコンポーネントを追加 プロジェクトテンプレートが増える 9 / 30
今回 WinUI のセッションもいくつかあってうれしかったですよね 何もしていないのにダークモードなった 10 / 30
WPF そして WinForms 常にこれ。ダークモードにならない 11 / 30
WPF、WinForms の 今 12 / 30
WinUI だと WPF では使えない WinForms では使えない 13 / 30
WPF でできること TargetFramework の変更で UISettings クラスが使用可能に バージョン番号に何を書くか 間違えても このメッセージからコピペ 14 / 30
WPF と WinForms でダークモード 色の取り方は同じ セットの仕方だけ異なる (当然の結果です) 15 / 30
テーマ自体は取れない どなたか取り方知っていたら教えてください WinUI WPF および WinForms 16 / 30
戦いの軌跡 レジストリを読んだり Win32 API を呼んだりすればできるがそれは違う (WPF/WinFormsで出来たとは言い難い) 17 / 30
これからは違う たかがダークモード一つ。されどダークモード一つ WinUI だけでなく WinForms もモダンなアプリ作れるようにするからという強いメッ セージが今回の Build 2024 ※ WPF も同じメッセージ https://build.microsoft.com/en-US/sessions/b946ccb6-bb6b-4641-acc7-b5fadba2881e 18 / 30
でも WinForms って 大変でしょう? 19 / 30
目次 • Data Binding • 順に並ぶレイアウト •フォーカスに応じたスタイルの変更 • 画面の分割表示 (1) • 画面の分割表示 (2) 20 / 30
Data Binding https://build.microsoft.com/en-US/sessions/b946ccb6-bb6b-4641-acc7-b5fadba2881e 21 / 30
Data Binding WinForms DataBinding で Bing りください https://rksoftware.hatenablog.com/entry/2022/11/14/080000 22 / 30
順に並ぶレイアウト 縦並び レイアウト FlowLayoutPanel を使う 縦並び レイアウト 横並び レイアウト 横並び レイアウト デザイナでレイアウトするのは大変 >< だったらコードで書こう! 23 / 30
フォーカスに応じたスタイルの変更 キーボードフォーカス のある TextBox を 強調表示 24 / 30
画面の分割表示 (1) SplitContainer を使う 境界線はユーザーが マウスドラッグで移動できる 画面右側全部 Grid 画面サイズが変わっても 右側全部 Grid 25 / 30
DEMO 26 / 30
画面の分割表示 (2) Dock プロパティを使う TextBox が常に左上 画面サイズが変わっても 右側の残りの領域全部 Grid 画面サイズが変わっても Label が常に左下 27 / 30
DEMO 28 / 30
まとめ 29 / 30
まとめ ⚫ WinForms でもモダンなアプリがつくれる ⚫ できないとつらいこと、実は意外とできます ⚫ WinForms を使う機会にもモダンをあきらめない! 30 / 30
ありがとうございました。 【オンライン】Build 後! C# Tokyo イベント 石崎 充良 31 / 30