C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Windows 11 タブレットモードの設定(続)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■103664 / inTopicNo.1)  Windows 11 タブレットモードの設定(続)
  
□投稿者/ 河童 (8回)-(2025/05/13(Tue) 10:36:27)

分類:[C#] 

開発環境
Windows 11 pro
C#
VS2019
.NET Framework 4.7.2
Windowsフォームアプリケーション(.Net Framework)でプロジェクトを作成しています。

2年前にも同じ質問(101639)をさせていただきました。

【現象】
Windows 10では問題なかったフォーム画面が、
Windows 11では、Surface Go 4 でキーボード(タイプカバー)を外すと勝手に最大化される。

【原因】
Windows 11では「タブレットモード」が廃止され、自動的に端末の状態(キーボード有無)に応じたモード切り替えが行われる。
タイプカバーを外すとタブレットとして認識され、フォームが最大化される動きになる。

【対策】
MaximizeBox:False に設定する
または、Windows 10 にダウングレード

今回、Winodows10 のサポートがきれるということで再度解決策を考えているところです。

デバイスマネージャーのキーボードには、タイプカバーを接続した状態です。
・HID キーボードデイバス (変換済みポータブル デバイス コントロール デバイス)
・HID キーボードデイバス (GPIO ボタン ドライバー)
・HID キーボードデイバス (USB 入力デバイス)
・HID キーボードデイバス (Inter(R)HID Event Filter)

タイプカバーを外すと
3番目のUSB 入力デバイスが消えます。

引用返信 編集キー/
■103665 / inTopicNo.2)  Re[1]: Windows 11 タブレットモードの設定(続)
□投稿者/ 魔界の仮面弁士 (3841回)-(2025/05/13(Tue) 11:14:44)
No103664 (河童 さん) に返信
> 【対策】
> MaximizeBox:False に設定する
この対策では都合が悪いということでしょうか?
あるいは、キーボードレスになったときだけ一時的にフォーム設定が変更される(再接続時に復帰)できれば問題ないのでしょうか?

> 【現象】
> Windows 10では問題なかったフォーム画面が、
> Windows 11では、Surface Go 4 でキーボード(タイプカバー)を外すと勝手に最大化される。
手元に Surface Go 4 は無いのですが、他の 2-in-1 機でどうなるのかを確認してみたいです。
該当画面は、モーダル表示でしょうか、モードレス表示でしょうか。

また、Form の下記の項目は何に設定されていますか?
・FormBorderStyle
・MaximumSize
・ShowInTaskbar
・AutoScaleMode
引用返信 編集キー/
■103666 / inTopicNo.3)  Re[2]: Windows 11 タブレットモードの設定(続)
□投稿者/ 河童 (9回)-(2025/05/13(Tue) 11:57:34)
No103665 (魔界の仮面弁士 さん) に返信
ご回答ありがとうございます。

>>【対策】
>>MaximizeBox:False に設定する
> この対策では都合が悪いということでしょうか?
設定しても表示が最大化になってしまいます。

> あるいは、キーボードレスになったときだけ一時的にフォーム設定が変更される(再接続時に復帰)できれば問題ないのでしょうか?
Windows 10 で設定できた「タブレットモード」オフ状態のように続けば嬉しいですが、
キーボードレスのとき、フォームが最大化されなければ問題ありません。

> 手元に Surface Go 4 は無いのですが、他の 2-in-1 機でどうなるのかを確認してみたいです。
私も確認してみたいですが、別端末がなく確認できない状態です。

> 該当画面は、モーダル表示でしょうか、モードレス表示でしょうか。
モードレス表示です。

> また、Form の下記の項目は何に設定されていますか?
・FormBorderStyle:None
・MaximumSize:0, 0
・ShowInTaskbar:True
・AutoScaleMode:Font


現状、レジストリの変更で
「ConvertibleSlateMode」を「1」にすることで、フォーム画面の最大化は防止できます。
しかし、この設定だとタッチキーボードが表示されなくなるという問題があります。

引用返信 編集キー/
■103667 / inTopicNo.4)  Re[3]: Windows 11 タブレットモードの設定(続)
□投稿者/ 魔界の仮面弁士 (3842回)-(2025/05/13(Tue) 12:04:32)
No103666 (河童 さん) に返信
>>また、Form の下記の項目は何に設定されていますか?
> ・FormBorderStyle:None
> ・MaximumSize:0, 0

FormBorderStyle が None なのであれば、
MaximumSize と MinimumSize を明示してみるのはどうでしょうか?
今は手元に環境が無くて試せないですが…。
https://dobon.net/vb/dotnet/form/minimumsize.html
引用返信 編集キー/
■103668 / inTopicNo.5)  Re[4]: Windows 11 タブレットモードの設定(続)
□投稿者/ 河童 (10回)-(2025/05/14(Wed) 00:42:25)
No103667 (魔界の仮面弁士 さん) に返信
> MaximumSize と MinimumSize を明示してみるのはどうでしょうか?
設定するとフォーム画面は最大化されませんでした。
しかし、表示位置が画面の左上端になります。

this.StartPosition = FormStartPosition.CenterScreen;
これをLoad時前に設定してもセンターになりません。

また、フォームのほかにデータグリッドビューも最大化されることが判明しました。


引用返信 編集キー/
■103669 / inTopicNo.6)  Re[5]: Windows 11 タブレットモードの設定(続)
□投稿者/ Azulean (4回)-(2025/05/14(Wed) 07:30:43)
2025/05/14(Wed) 07:32:20 編集(投稿者)

No103668 (河童 さん) に返信
> 設定するとフォーム画面は最大化されませんでした。
> しかし、表示位置が画面の左上端になります。
>
> this.StartPosition = FormStartPosition.CenterScreen;
> これをLoad時前に設定してもセンターになりません。

基本的にWindowsの仕様だと思っています。
それが嫌なのであれば、Microsoftへフィードバックするところでしょう。

短期的には諦めるのが一番簡単だと思いますが、なぜ追究されているのでしょうか?
自分の好み? 納品先 or 顧客の強い希望?
Windowsの仕様にあらがうことを求めるのは、出口のない迷路だと予想されますので、受け入れた上でのベターな着地点を模索した方が建設的でしょう。


どちらかと言えば、リサイズ可能なようにするのが理想的なアプリケーションのあり方だと思います。
解像度も千差万別となってきているなか、特定のサイズに固定的に作り込んだ結果、(タブレットモードみたいな)いまいちな見た目になるのは、アプリケーションの仕様の不具合であろうと思えます。

ーーーー
余談

迷惑投稿者判定はあくまで投稿しようとしている内容の一部が判定に引っかかる話であって、スレッドを立て直すことによる効果はないはずです。
引用返信 編集キー/
■103670 / inTopicNo.7)  Re[5]: Windows 11 タブレットモードの設定(続)
□投稿者/ 魔界の仮面弁士 (3843回)-(2025/05/14(Wed) 08:46:17)
No103668 (河童 さん) に返信
> また、フォームのほかにデータグリッドビューも最大化されることが判明しました。

それは DataGridView の Anchor あるいは Dock プロパティが設定されているのでは無いでしょうか。

そもそも最大化されると何が困るのか、にもよりますが、
どうせ元画面が FormBorderSyle.None なのであれば
発想を変えて、いっそのこと最初から最大化される前提で作ってしまい、
不要な余剰領域のところを透過させておくというのはどうでしょうか。

色指定で透過させるなら TransparencyKey プロパティ、
ピクセル指定で透過なら UpdateLayeredWindow API とか。
http://yellow.ribbon.to/~azumaya/doc_dotnet_uplayeredwnd.php
引用返信 編集キー/
■103671 / inTopicNo.8)  Re[6]: Windows 11 タブレットモードの設定(続)
□投稿者/ 魔界の仮面弁士 (3844回)-(2025/05/14(Wed) 10:17:04)
No103670 (魔界の仮面弁士) に追記
> どうせ元画面が FormBorderSyle.None なのであれば
> 発想を変えて、いっそのこと最初から最大化される前提で作ってしまい、
> 不要な余剰領域のところを透過させておく

WindowState が Maximized になってしまうのは避けられないものとして、
イメージとしては、こんな感じで対処するということです。

1) 現在の Form と同サイズの Panel を準備する。
2) その Panel の上に、既存の Form 上にあったコントロールすべてを載せ替える。
3) Panel の BackgroundColor を明示指定する。
 既定では親コントロールの背景色と同じ(恐らく Control)になっているので、
 いったん別の色を指定してから Control 色を設定しなおすと明示指定したことになる。
4) その Panel を Form の中央に配置し、Panel の Anchor を Top|Left から None に変更しておく。
 (これにより、Form のサイズが変更した場合も Panel がフォーム中央に配置され続ける)
5) Form の BackgroundColor を、普段使っていない色にする。たとえば Magenta。
6) Form の TransparencyKey を、5 で設定した色と同色にしておく。
引用返信 編集キー/
■103674 / inTopicNo.9)  Re[6]: Windows 11 タブレットモードの設定(続)
□投稿者/ 河童 (11回)-(2025/05/14(Wed) 23:36:02)
No103669 (Azulean さん) に返信
ご回答ありがとうございます。

> 基本的にWindowsの仕様だと思っています。
> それが嫌なのであれば、Microsoftへフィードバックするところでしょう。
そうですね。
Surface Go から Go 4 と使い続けていて、今までできたことができなくなったと
Microsoft カスタマーセンターへ問い合わせしたことがあります。
いち個人の意見として受けてくれますが、実際に対応はされないと思っています。

> 短期的には諦めるのが一番簡単だと思いますが、なぜ追究されているのでしょうか?
> 自分の好み? 納品先 or 顧客の強い希望?
自分の好みですね。
システムとして開発してきたものが、使えなくなるのが惜しいです。

> Windowsの仕様にあらがうことを求めるのは、出口のない迷路だと予想されますので、受け入れた上でのベターな着地点を模索した方が建設的でしょう。
> どちらかと言えば、リサイズ可能なようにするのが理想的なアプリケーションのあり方だと思います。
> 解像度も千差万別となってきているなか、特定のサイズに固定的に作り込んだ結果、(タブレットモードみたいな)いまいちな見た目になるのは、アプリケーションの仕様の不具合であろうと思えます。
フォーム画面が最大化されてもシステムが動かなくなるということはないのですが、見た目と操作性が悪くなりますが。

引用返信 編集キー/
■103675 / inTopicNo.10)  Re[6]: Windows 11 タブレットモードの設定(続)
□投稿者/ 河童 (12回)-(2025/05/14(Wed) 23:46:49)
No103670 (魔界の仮面弁士 さん) に返信
> そもそも最大化されると何が困るのか、にもよりますが、
システム画面の表示サイズの問題で見た目と操作性が悪くなります。

例えば、独自のドロップダウンリストを作成しています。
ラベルの幅に合わせて、リストを表示させるフォームを開く処理。


引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ