Maximizedに設定したフォームがありますが、何らかの理由でタスクバーを無視して画面全体に最大化しています。それは典型的なことですか?回避策はありますか?
Windows XP をデュアル モニター設定で実行しています (最初/プライマリ ウィンドウのタスクバー)。
FormBorderStyle.None を使用している場合、最大化したときにタスクバーを覆わないようにするのは非常に簡単です。
this.MaximumSize = Screen.PrimaryScreen.WorkingArea.Size;
これはおそらく他の境界線スタイルでも機能し、フォームがタスクバーを覆わないようにするための最もクリーンな方法です。
説明から抜けていたことの 1 つは、最大化ボタンをオフにしていたことです。そのプロパティをオンに戻すテストを行ったところ、タスク バーが再び表示されました。最大化ボタンが必要ない場合は、ユーザーにアプリケーション画面以外を見せたくないキオスクスタイルのアプリケーションを作成していると想定しているようです。まさに私が期待するものではありませんが、うまくいくと思います。
説明から除外したことの1つは、最大化ボタンをオフにしたことです。そのプロパティをオンに戻すことをテストしたところ、タスクバーが再び表示されました。どうやら、最大化ボタンが必要ない場合は、ユーザーにアプリケーション画面以外のものを見せたくないキオスクスタイルのアプリケーションを作成していることを前提としています。私が期待するものとは正確には異なりますが、うまくいくと思います。
私はこの問題を抱えていて、ジェフの助けを借りてそれを解決しました。まず、windowstateをMaximizedに設定します。ただし、MaximizeBoxを無効にしないでください。次に、MaximizeBoxを無効にする場合は、プログラムで行う必要があります。
private void frmMain_Load(object sender, EventArgs e)
{
this.MaximizeBox = false;
}
最大化ボタンを再度有効にしたくない場合は、ウィンドウのサイズを手動で設定できます。
private void Maximize()
{
Screen screen = Screen.FromPoint(this.Location);
this.Size = screen.WorkingArea.Size;
this.Location = Point.Empty;
}
(WorkingArea は、タスクバーやその他のツールバーを除く、アプリケーションが使用できる画面の領域です)
最大化する前に、フォームの境界線を [なし] に設定します。
このコードは、単一のモニターで機能します。
private void Form1_Load(object sender, EventArgs e)
{
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
}
現時点ではこれを持っていないため、デュアル モニターのシナリオはテストしていません。:P
編集:「最大化された画面はタスクバーを無視します」というメッセージが表示されませんでした。Ignoreとはどういう意味ですか?
フォームをタスク バー全体に表示し、画面全体に表示しますか?
タスクバーは、左、上、下、右にドッキングできます。オーバーレイされたタスクバーなしで最大化されたウィンドウが必要な場合は、次のコードを使用します。
...切る... パブリック部分クラス Form2 : フォーム { パブリック Form2() { // デフォルトの開始位置を手動に設定 this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; // Form に位置とサイズを設定します。 this.Bounds = Screen.PrimaryScreen.WorkingArea; .... InitializeComponent(); } ...切る...
フォームの境界線スタイルを none に設定すると、フォームはタスクバーを非表示にします。これを回避するには、フォームの MaximumSize を手動で設定する必要があります。Windows がタスクバーを自動的に非表示にする場合、フォームは非表示のタスクバーもカバーします! これを回避するには、最大サイズの高さを 1 ピクセル減らします (タスクバーが下部にある場合)。
Me.MaximumSize = New Size(My.Computer.Screen.WorkingArea.Size.Width, _
My.Computer.Screen.WorkingArea.Size.Height - 1)