C# 按百分比设置组件的尺寸

C# 按百分比设置组件的尺寸,c#,winforms,C#,Winforms,在按百分比重新调整表单大小(例如最大化)后,我需要设置组件(例如DGV(DataGridView)的宽度和长度。例如,我的DGV的宽度应为100%,高度应为45% 我读过关于船坞和锚地的文章,但我无法通过这些选项来实现我的想法 有没有合适的方法解决这个问题 您可以在布局时使用手柄 例如,创建一个包含一列和两行的TableLayoutPanel,将行大小设置为55%和45%,并将DataGridView添加到第二列 示例: var form = new Form(); var dgv = new

在按百分比重新调整表单大小(例如最大化)后,我需要设置组件(例如DGV(
DataGridView
)的宽度和长度。例如,我的DGV的宽度应为100%,高度应为45%

我读过关于船坞和锚地的文章,但我无法通过这些选项来实现我的想法

有没有合适的方法解决这个问题

您可以在布局时使用手柄

例如,创建一个包含一列和两行的
TableLayoutPanel
,将行大小设置为55%和45%,并将
DataGridView
添加到第二列

示例:

var form = new Form();

var dgv = new DataGridView { Dock = DockStyle.Fill };

var table = new TableLayoutPanel 
{ 
    Dock = DockStyle.Fill,
    ColumnCount = 1,
    RowCount = 2
};

table.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
table.RowStyles.Add(new RowStyle(SizeType.Percent, 55F));
table.RowStyles.Add(new RowStyle(SizeType.Percent, 45F));

table.Controls.Add(dgv, 0, 1);

form.Controls.Add(table);

form.ShowDialog();

对于我们这些不知道DGV是什么的人…?@oddparity我猜是的,它是“DataGridView”(DGV)。您可以尝试在表单大小调整事件中使用简单计算来计算新宽度和高度,然后将这些值分配给DataGridView组件。计算新宽度=以前客户端区域的45%,新高度=表单客户端区域的高度。谢谢@Avril,但是不同的显示器有不同的分辨率,这个计算对我的分辨率很好。非常感谢@Dominic。我用TableLayoutPanel和FlowLayout解决了这个问题。