【问题标题】:How to proportionally resize a control with the mouse within WinForm's control designer?如何在 WinForm 的控件设计器中使用鼠标按比例调整控件的大小?
【发布时间】:2014-09-11 12:49:30
【问题描述】:

我试图用鼠标调整控件的大小,按住左键 + Shift,希望宽度和高度都能按比例调整(就像在 Photoshop 中一样)。没用。

我用谷歌搜索了如何做到这一点,果然我会在一分钟内得到答案。令我惊讶的是,我找不到任何东西。

我必须了解 Visual Studio,即使是 2013 版,也缺乏这个非常基本的设计功能?!还是我一直想念它?

请注意,这不仅适用于特定控件;这是一个设计工具,我想在任何可以在表单/用户控件上“绘制”的东西上使用。

【问题讨论】:

  • 不确定它是否存在,但您可以在设计器代码中手动设置尺寸,或者您可以调整到您想要的水平/垂直尺寸,然后使用设计器代码将其他尺寸调整为再次制作控制方块
  • 令我惊讶的是,我从未错过它。
  • @Charleh 这就是我每次最终都会做的事情,但坦率地说,我可以使用更高效的东西。 ://
  • 不确定然后萌芽,也许升级到 WPF(抱歉不是很有建设性,是的,我很少需要维护一些旧的 VB6 应用程序,所以我知道你的痛苦)
  • 投票关闭此内容的人,因为它“主要基于意见”,您愿意解释一下它是怎么回事吗?谢谢。

标签: c# .net winforms visual-studio design-time


【解决方案1】:

你总是可以扩展你想要保持比例的控件:

public class Panelx : Panel {

    private int _width;
    private int _height;
    private double _proportion;
    private bool _changingSize;

    [DefaultValue(false)]
    public bool MaintainRatio { get; set; }

    public Panelx() {
        MaintainRatio = false;
        _width = this.Width;
        _height = this.Height;
        _proportion = (double)_height / (double)_width;
        _changingSize = false;
    }

    protected override void OnResize(EventArgs eventargs) {
        if (MaintainRatio == true) {
            if (_changingSize == false) {
                _changingSize = true;
                try {
                    if (this.Width != _width) {
                        this.Height = (int)(this.Width * _proportion);
                        _width = this.Width;
                    };
                    if (this.Height != _height) {
                        this.Width = (int)(this.Height / _proportion);
                        _height = this.Height;
                    };
                }
                finally {
                    _changingSize = false;
                }
            }
        }
        base.OnResize(eventargs);
    }

}

然后您需要做的就是将 MaintainRatio 属性设置为 'true' 以使其适当调整大小。

但是,如果您需要它与许多不同的控件一起使用,此解决方案可能会非常困难。

【讨论】:

  • 这只会解决特定控件上的问题,这不是我想要的。我更新了问题。
  • 是的,如果你想在所有控件上使用我的解决方案,我的解决方案会为你做很多工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多