C#winform动态控件大小调整

C#winform动态控件大小调整,c#,winforms,C#,Winforms,我希望我的winform应用程序控件位于特定位置和特定大小,无论用户使用的屏幕分辨率如何 有谁能给我一个快速的例子,如何塑造一个面板,从60%的屏幕下降到100%的屏幕下降,并成为整个屏幕的长度 我希望这是有意义的,所以基本上无论屏幕分辨率是什么,面板将占据winform的40%,在应用程序上占60% 谢谢 无论分辨率是800X600还是1024X760,我都希望相同的%。您可以使用,它将表单分为两个区域。如果将其方向更改为水平,将得到两个区域,一个从屏幕顶部开始,另一个从另一侧开始。现在,您可

我希望我的winform应用程序控件位于特定位置和特定大小,无论用户使用的屏幕分辨率如何

有谁能给我一个快速的例子,如何塑造一个面板,从60%的屏幕下降到100%的屏幕下降,并成为整个屏幕的长度

我希望这是有意义的,所以基本上无论屏幕分辨率是什么,面板将占据winform的40%,在应用程序上占60%

谢谢

无论分辨率是800X600还是1024X760,我都希望相同的%。

您可以使用,它将表单分为两个区域。如果将其方向更改为水平,将得到两个区域,一个从屏幕顶部开始,另一个从另一侧开始。现在,您可以定义每个面板的最小尺寸:

SplitContainer.Panel1MinSize = Convert.ToInt32(0.6 * Form.ActiveForm.ClientSize.Height);
SplitContainer.Panel2MinSize = Convert.ToInt32(0.4 * Form.ActiveForm.ClientSize.Height);
这使得顶部面板占据60%的客户区域,底部面板占据40%的客户区域。它将自动在表单上开始60%的折扣。然后,您可以将任何其他想要的控件放入面板,并使用
control.dock=DockStyle.(something)将其固定到面板上

另一种改变控件位置的方法是基本上计算它的位置和大小。您可以将客户端区域的宽度设置为
Form.ClientSize.width
,将应用程序上60%向下的起始X、Y位置设置为:

现在可以将控件的大小和位置设置为:

Control.Size = new Size(Form.ClientSize.Width, Convert.ToInt32(0.4 * Form.ClientSize.Height));
Control.Location = new Point(0, Convert.ToInt32(0.6 * Form.ClientSize.Height);
因此,如果您想强制例如
Form1
中的
label1
像您在帖子中写的那样,一种可能性是:

private void Form1_Resize(object sender, EventArgs e)
{
    label1.Size = new Size(this.ClientSize.Width, Convert.ToInt32(0.4 * this.ClientSize.Height));
    label1.Location = new Point(0, Convert.ToInt32(0.6 * this.ClientSize.Height));
}
可以使用,它将窗体分为两个区域。如果将其方向更改为水平,将得到两个区域,一个从屏幕顶部开始,另一个从另一侧开始。现在,您可以定义每个面板的最小尺寸:

SplitContainer.Panel1MinSize = Convert.ToInt32(0.6 * Form.ActiveForm.ClientSize.Height);
SplitContainer.Panel2MinSize = Convert.ToInt32(0.4 * Form.ActiveForm.ClientSize.Height);
这使得顶部面板占据60%的客户区域,底部面板占据40%的客户区域。它将自动在表单上开始60%的折扣。然后,您可以将任何其他想要的控件放入面板,并使用
control.dock=DockStyle.(something)将其固定到面板上

另一种改变控件位置的方法是基本上计算它的位置和大小。您可以将客户端区域的宽度设置为
Form.ClientSize.width
,将应用程序上60%向下的起始X、Y位置设置为:

现在可以将控件的大小和位置设置为:

Control.Size = new Size(Form.ClientSize.Width, Convert.ToInt32(0.4 * Form.ClientSize.Height));
Control.Location = new Point(0, Convert.ToInt32(0.6 * Form.ClientSize.Height);
因此,如果您想强制例如
Form1
中的
label1
像您在帖子中写的那样,一种可能性是:

private void Form1_Resize(object sender, EventArgs e)
{
    label1.Size = new Size(this.ClientSize.Width, Convert.ToInt32(0.4 * this.ClientSize.Height));
    label1.Location = new Point(0, Convert.ToInt32(0.6 * this.ClientSize.Height));
}

要使窗体保持与设计时相同的大小(以像素为单位),请将AutoSize属性设置为false,将AutoScaleMode属性设置为None,并使用FormBorderStyle中的一个“固定”选项。这将抑制系统或用户更改表单大小的所有尝试。这意味着它将是相同的大小(以像素为单位),但在不同的屏幕分辨率下,它可能看起来更大或更小


如果希望窗体相对于屏幕保持“相同大小”,则需要保持窗体大小可调,并在启动时读取屏幕大小,并设置窗体的位置和大小属性,以便窗体使用所需的屏幕相对区域。

要使窗体保持与设计时相同的大小(以像素为单位),将AutoSize属性设置为false,将AutoScaleMode属性设置为None,并使用FormBorderStyle中的一个“固定”选项。这将抑制系统或用户更改表单大小的所有尝试。这意味着它将是相同的大小(以像素为单位),但在不同的屏幕分辨率下,它可能看起来更大或更小


如果希望窗体相对于屏幕保持“相同大小”,然后,您需要保持其大小可调,并在启动时读取屏幕大小,并设置窗体的位置和大小属性,以便它使用所需的屏幕相对区域。

您可以使用
System.Windows.Forms
中名为
Screen
的静态类。 只需按如下方式设置面板的宽度和高度:

panel.Height = Screen.PrimaryScreen.WorkingArea.Height;
panel.Width = Screen.PrimaryScreen.WorkingArea.Width * 40 / 100;

您可以使用此对象属性设置面板的顶部。但是我必须注意,如果您的面板是另一种形式,那么它的左上角属性显然是相对于包含形式的。

您可以使用名为
Screen
的静态类,该类位于
System.Windows.Forms
中。 只需按如下方式设置面板的宽度和高度:

panel.Height = Screen.PrimaryScreen.WorkingArea.Height;
panel.Width = Screen.PrimaryScreen.WorkingArea.Width * 40 / 100;

您可以使用此对象属性设置面板的顶部。但我必须注意,如果您的面板是另一种形式,那么它的左上角属性显然与包含表单有关。

您是否尝试查看TableLayoutPanel?占表单40%的面板,或占屏幕40%的表单?您是否尝试查看TableLayoutPanel?占表单40%的面板,还是占屏幕40%的表格?