如何在WinForm';s控件设计器

本文关键字:控件 WinForm | 更新日期: 2023-09-27 18:21:41

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

我在谷歌上搜索了一下如何做到这一点,确信我会在一分钟内得到答案。令我惊讶的是,我什么也找不到。

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

请注意,这并非仅针对特定控件;这是一个设计工具,我想用在任何可以"绘制"在窗体/用户控件上的东西上。

如何在WinForm';s控件设计器

您可以随时扩展控制,以保持的比率

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",以使其适当调整大小。

不过,如果你需要它来处理许多不同的控件,这个解决方案可能会非常困难。