GcResizeのKeepAspectRatioプロパティをTrueに設定してフォームを最大化すると、タスクバーに重なって表示される

文書番号 : 41761     文書種別 : 不具合     登録日 : 2018/04/18     最終更新日 : 2018/05/10
文書を印刷する
対象製品
PlusPak for Windows Forms 8.0J
状況
修正済み
詳細
GcResizeのKeepAspectRatioプロパティをTrueに設定してフォームを最大化すると、タスクバーに重なって表示されます。
KeepAspectRatioプロパティをFalseに設定してフォームを最大化した場合は、タスクバーと重ならずに表示されます。
回避方法
この問題はService Pack 4(v8.0.2018.0510)で修正されました。
不具合を修正した最新のサービスパックは、アップデートページ からダウンロードできます。

Service Pack 4より前のバージョンでは次の方法で回避可能です。

以下の回避コードを追加して、最大化したときのフォームサイズを調整します。

◎サンプルコード(VB)
Partial Public Class Form1
    Inherits Form

    Public Sub New()
        InitializeComponent()
        Me.resetFormMaxSize()
    End Sub

    Private Sub Form1_Move(ByVal sender As Object, ByVal e As EventArgs)
        Me.resetFormMaxSize()
    End Sub

    Private Sub resetFormMaxSize()
      If Me.WindowState <> FormWindowState.Minimized Then
          Dim borderSize As Integer = Me.Size.Width - Me.ClientSize.Width
          Dim sz As Size = Screen.GetWorkingArea(Me).Size
          Me.MaximumSize = New Size(sz.Width + borderSize, sz.Height + borderSize)
      End If
    End Sub
End Class

◎サンプルコード(C#)
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.resetFormMaxSize();
    }
    private void Form1_Move(object sender, EventArgs e)
    {
        this.resetFormMaxSize();
    }
    private void resetFormMaxSize()
    {
        if (this.WindowState != FormWindowState.Minimized){
            int borderSize = this.Size.Width - this.ClientSize.Width;
            Size size = Screen.GetWorkingArea(this).Size;
            this.MaximumSize = new Size(size.Width + borderSize, size.Height + borderSize);
        }
    }
}