[PPWI11234]GcResizeコンポーネントによるリサイズ後に、DataGridViewへ行や列を追加してもリサイズが適用されない

文書番号 : 39119     文書種別 : 制限事項     登録日 : 2015/09/29     最終更新日 : 2016/04/28
文書を印刷する
対象製品
PlusPak for Windows Forms 7.0J
詳細
GcResizeコンポーネントを使用してDataGridViewのサイズを変更した後に新しい行と列を追加すると、追加された行の高さまたは列の幅がリサイズされず、サイズ変更する前のサイズになります。

本現象はGcApplicationResizeコンポーネント、GcResizePanelコントロールを使用した場合にも発生します。

なお、DataGridViewのColumnCountプロパティを使用して列を追加する時、常に既定の列幅が使用されます。これはDataGridViewの仕様による動作で、GcResizeコンポーネントで変更することはできません。
回避方法
この問題はService Pack 3(v7.0.2016.0428)で修正されました。
不具合を修正した最新のサービスパックは、アップデートページ からダウンロードできます。

Service Pack 3より前のバージョンでは次の方法で行の高さを変更することが可能です。

下記のように問題を修正するユーザー定義のリサイズポリシーを適用します。

ユーザー定義のリサイズポリシーの使い方については、製品ヘルプの次の章を参照してください。

+[PlusPak の使い方]
 +[レイアウト]
  +[GcResize コンポーネント]
   +[リサイズポリシー]
    +[リサイズポリシーの使い方]
      [ユーザー定義のリサイズポリシー]

[Visual Basic]
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    Me.GcResize1.ResizePolicies.Add(New DataGridViewResizePolicyEx())
End Sub

Public Class DataGridViewResizePolicyEx
    Inherits GrapeCity.Win.Components.DataGridViewResizePolicy
    Public Overrides Sub ResizeFont(control As Control, infos As GrapeCity.Win.Components.ResizeFontInfo)
        MyBase.ResizeFont(control, infos)
        Dim dataGridView = TryCast(control, DataGridView)
        If (dataGridView Is Nothing) Then
            Return
        End If
        Dim rowTemplate = dataGridView.RowTemplate
        rowTemplate.DefaultCellStyle.Font = infos.ScaleFont(rowTemplate.DefaultCellStyle.Font)
    End Sub
    Public Overrides Sub ResizeLayout(control As Control, infos As GrapeCity.Win.Components.ResizeLayoutInfo)
        MyBase.ResizeLayout(control, infos)
        Dim dataGridView = TryCast(control, DataGridView)
        If (dataGridView Is Nothing) Then
            Return
        End If
        Dim rowTemplate = dataGridView.RowTemplate
        rowTemplate.Height = infos.ScaleY(rowTemplate.Height)
    End Sub
End Class

[C#]
private void Form1_Load(object sender, EventArgs e)
{
    gcResize1.ResizePolicies.Add(new DataGridViewResizePolicyEx());
}

public class DataGridViewResizePolicyEx : GrapeCity.Win.Components.DataGridViewResizePolicy
{
    public override void ResizeFont(Control control, GrapeCity.Win.Components.ResizeFontInfo infos)
    {
        base.ResizeFont(control, infos);
        DataGridView dataGridView = control as DataGridView;
        if ((dataGridView == null))
        {
            return;
        }
        DataGridViewRow rowTemplate = dataGridView.RowTemplate;
        rowTemplate.DefaultCellStyle.Font = infos.ScaleFont(rowTemplate.DefaultCellStyle.Font);
    }
    public override void ResizeLayout(Control control, GrapeCity.Win.Components.ResizeLayoutInfo infos)
    {
        base.ResizeLayout(control, infos);
        DataGridView dataGridView = control as DataGridView;
        if ((dataGridView == null))
        {
            return;
        }
        DataGridViewRow rowTemplate = dataGridView.RowTemplate;
        rowTemplate.Height = infos.ScaleY(rowTemplate.Height);
    }
}