質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

Q&A

1回答

6052閲覧

タスクバーを残した状態でフォームを最大表示したい

gwg2r4

総合スコア8

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

0グッド

1クリップ

投稿2019/02/06 05:10

1.あるフォームを初期表示の際に、タスクバーが見える状態で最大表示したい
2.以後は、フォームのサイズを任意に変更させず、最大 or 最小としたい

2.については、FormBorderStyleを、FixedSingleに設定し、最大化ボタンも無効とすることで、実現することができました。
(タイトルバーのダブルクリックについても、ウインドウメッセージを監視し、サイズ変更できないようにしています。)

しかし、どうしても、1.について実現方法が分かりません。

this.WindowState = FormWindowState.Maximized;

上記の一文を記述すれば、希望の結果が得られると思っていたのですが、フォームがディスプレイいっぱいに表示され、タスクバーが隠れる or タスクバーに隠れることになってしまいます。

フォームの最大化ボタンを押した際の、これと同じ動作を実現したいのですが。

あるサイトを参考に、
デスクトップのワーキングエリアと、ウインドウの枠サイズを取得し、そこから、フォームのサイズを導出し、希望に近しい結果を得ようともしましたが、どうしても、最大とはいえないサイズになってしまいますし、致命的に画面表示が遅いです。

どなたかいい案をご教示頂けないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

とりあえず、タスクバーを隠す設定を切れば、フォームを最大化してもタスクバーは残りますが。

投稿2019/02/06 05:15

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gwg2r4

2019/02/06 05:18

申し遅れましたが、OSはWindows10です。 タスクバーを隠す設定はしておりません。「タスクバーを自動的に隠す」の設定はオフにしております。
y_waiwai

2019/02/06 05:22 編集

なら、最大化したときにタスクバーが隠れるというのは異常ですね ほかになにかタスクバー操作系のツールを入れたりしてないでしょうか エクスプローラの窓を最大化しても隠れるでしょうか?
gwg2r4

2019/02/06 05:27

エクスプローラーや他のアプリケーション、また、この問題のフォーム(本処理追加前)を□ボタンで最大化しても、タスクバーには何ら影響ありません。 WindowState = FormWindowState.Maximized を記述した場合にのみ、タスクバーに覆いかぶさって表示されてしまいます
y_waiwai

2019/02/06 05:30

ふつうにC#でWindowsFormで作れば、最大化でタスクバーが隠れるということはありません。 いちど、新規にフォームだけのプロジェクトを作って実行してみてください。 おそらく、あなたの作っているというアプリがなにか余計なことをしてますね
tamoto

2019/02/06 05:46

横からですが、 最大化ボタンの無効化(this.MaximizeBox = false;)を書くと、たしかにFormWindowState.Maximized設定時にタスクバーの上まで含めて最大化するようになりますね。 解決方法についてはわかりません、すみません。
y_waiwai

2019/02/06 06:14

ありがとうございます。 そういう原因であれば、 this.MaximumSize = Screen.PrimaryScreen.WorkingArea.Size; this.WindowState = FormWindowState.Maximized; でいけそーですが、はてさて。
gwg2r4

2019/02/07 03:54

y_waiwaiさん、tamotoさん、 コメントありがとうございます。 this.MaximumSize = Screen.PrimaryScreen.WorkingArea.Size; this.WindowState = FormWindowState.Maximized; 上記コードでタスクバーを残したまま、最大表示が実現できました。 但し、この後に、最大化ボタン無効化のコード(this.MaximizeBox = false;)を記述すると、なぜか最大化されておらず、若干小さいサイズで表示されるという現象が起きています。
y_waiwai

2019/02/07 04:02 編集

そこまでいくと、最大化時のサイズを取っておいて設定し直すとか場当たり的な対応となって、いやーんな感じになるけど、本当にその対応が必要なのかよく考慮してください それから、そのコードだとプライマリスクリーンのサイズ基準になるので、マルチディスプレイのときのことを考えて、スクリーンを判断して取るようにしてください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問