【问题标题】:.net Resizing control won't work?.net 调整大小控制不起作用?
【发布时间】:2009-12-31 02:04:27
【问题描述】:

当窗口大小发生变化时,我有几个图片框需要按纵横比调整大小。我假设我可以锚定宽度,但手动设置高度(即锚定左、右和顶部边缘;但不是底部。)但是,如果我尝试更改 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);
    }

【问题讨论】:

    标签: c# .net winforms


    【解决方案1】:

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

    • PictureBox 的SizeMode 是什么?是AutoSizeStretchImage 还是类似的东西?对于您想做的事情,它可能应该是Normal

    • 您确定您的锚定设置正确吗?

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

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

    【讨论】:

      【解决方案2】:

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

      Windows 窗体控件问题本质上很难调试,因为所有控件都可能会影响您正在执行的操作。首先,您需要尝试在具有尽可能少控件的表单上自行调试。是否有任何情况下调整大小行为正常?

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

      【讨论】:

        【解决方案3】:

        感谢您的想法——他们为我指明了正确的方向!一切都按原样设置,除了它们所在的 TableLayoutPanel 限制了它们的大小。我通过注意到图片框的大小值在运行时和设计器中根本无法编辑来确定这一点。

        所以我将 TableLayoutPanel 的 AutoSize 设置为 true,效果很好!

        【讨论】:

          猜你喜欢
          • 2015-10-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多