C# .net大小调整控件赢得';不行?

C# .net大小调整控件赢得';不行?,c#,.net,winforms,C#,.net,Winforms,我有几个图片盒,当窗口大小改变时,它们需要按纵横比调整大小。我假设我可以锚定宽度,但可以手动设置高度(即锚定左、右和上边缘;但不能锚定下边缘)。但是,如果我尝试更改Size属性,我的控件将不会调整大小。那为什么不行呢?如何调整控件的大小 private void Form1_Resize(object sender, System.EventArgs e) { int oldWidth = 1280; int oldHeight = 1024;

我有几个图片盒,当窗口大小改变时,它们需要按纵横比调整大小。我假设我可以锚定宽度,但可以手动设置高度(即锚定左、右和上边缘;但不能锚定下边缘)。但是,如果我尝试更改Size属性,我的控件将不会调整大小。那为什么不行呢?如何调整控件的大小

    private void Form1_Resize(object sender, System.EventArgs e)
    {
        int oldWidth = 1280;
        int oldHeight = 1024;
        int newWidth = webcamPictureBox.Size.Width; // this is auto-resized w/ window; becomes 591
        int newHeight = (oldHeight * newWidth) / oldWidth; // this is calculated manually; becomes 472

        // Control won't resize if I change the Size property
        // Size property stays the same
        this.webcamPictureBox.Size = new Size(newWidth, newHeight);
        this.thumbnailPictureBox.Size = new Size(newWidth, newHeight);
    }

用你发布的信息很难确定地回答这个问题

Windows窗体控件问题本质上很难调试,因为所有控件都可能影响您的操作。首先,您需要尝试在一个具有尽可能少的控件的窗体上自己调试它。是否存在调整大小操作正常的情况


也就是说,是否在这些控件上设置了Dock属性?如果设置为DockStyle.Fill,它们肯定不会调整大小。

我想您可能会遇到以下几个问题之一:

  • PictureBox的
    SizeMode
    是什么?是
    自动调整大小
    拉伸图像
    ,还是类似的东西?对于您想做的事情,它可能应该是
    正常的

  • 您确定锚定设置正确吗

  • 您是否调试并检查了要调整大小的图片框的最终大小?您应该验证它是否符合预期,并且表单是否已重新绘制

这些只是一些想法;你的代码不足以提供很好的响应。

谢谢你的想法——他们为我指明了正确的方向!一切都按他们应该的样子设置好了,除了他们所在的TableLayoutPanel限制了他们的尺寸。我注意到pictureboxes的大小值在运行时和设计器中都是不可编辑的,从而确定了这一点

所以我将TableLayoutPanel的AutoSize设置为true,效果非常好