C# 当我将窗体调整为全屏时,我的控件仍处于旧位置

C# 当我将窗体调整为全屏时,我的控件仍处于旧位置,c#,winforms,C#,Winforms,这是我的密码 private void button1_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Normal; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.Bounds = Screen.Prim

这是我的密码

        private void button1_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Normal;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Bounds = Screen.PrimaryScreen.Bounds;
            pictureBox1.Dock = DockStyle.Fill;

        }
我可以在
picturebox2
上应用哪些代码,以便
picturebox2
也根据表单进行替换…

您可以使用控件的和属性来确定调整表单大小时控件的行为
在WinForms中使用停靠和定位时,您通常会决定使用一个主控件(组)来获取屏幕的主要部分,以及另一组在剩余区域对齐的控件。因此,如果为PictureBox1控件设置DockStyle.Fill,则将另一个PictureBox设置为DockStyle.Right。调整窗体大小时,主区域将扩展。但是,请注意,这有时取决于控件的创建顺序,取决于控件的对齐方式以及控件是否按预期工作。为了达到您的目标,可能需要一些将各种控件放到前台的实验。
这列出了许多有关如何在Windows窗体上对齐控件的教程,特别是有关设置和控件的教程。

此外,您还可以使用各种布局控件,其中包括a(感谢@HansPassant的提示)。要了解详细信息,请参见此。

您需要将锚定设置为窗体上的所有控件(默认情况下,所有控件都“绑定”到窗体的顶部和左侧)。如果锚不够,尝试使用停靠面板和停靠控件


您可以从可视化编辑器中取消定位。选择一个控件,然后在“属性”面板上设置定位。

在这里,当主窗口被缩放时,您必须缩放子控件。 通过计算比例因子,尝试比例法,如下所示:

代码:

Size st = this.Size;
        int height = st.Height;
        int width = st.Width;

        this.WindowState = FormWindowState.Normal;
        this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        this.Bounds = Screen.PrimaryScreen.Bounds;

        Size newSize = this.Size;

        SizeF scaleFactor = new SizeF();
        scaleFactor.Height = newSize.Height / height;
        scaleFactor.Width = newSize.Width / width;

        this.Scale(scaleFactor);

我看不到这个代码中的picturebox2?是吗?是的,我问的是关于我能用图片框2做什么???图片框1覆盖了我的整个表单,图片框2是它上面的小图片…我使用锚点作为顶部、底部、左侧和右侧,但它拉伸了我的控件,所以控件看起来非常大。。。这不是比例…@Satinder:扩展了我的答案。他想要一个桌面布局面板。@HansPassant:谢谢你解答这个难题。看起来很像。@Satinder:看看Hans Passant指出的TableLayoutPanel。我已经在我的答案中添加了一些链接,但是它不适用于像picturebox2.Scale(scaleFactor)这样的子控件;设置窗体的比例因子。这还应缩放所有子控件(包括图片框)。如果图片框中的图像未缩放,则将“PictureBox.SizeMode”属性更改为“StretchImage”。如果pictureBox2因位于后面而未显示,请尝试使用pictureBox2.BringToFront();