如何在调整窗体和按钮大小的同时,保持按钮为正方形?

编程语言 2026-07-07

我有一个表单,里面有一个按钮,按钮的背景图片是98×98。随着表单高度的增加,我希望按钮的高度也随之增加,但我希望按钮保持正方形以维持图片的纵横比。如果调整表单的宽度,我不希望按钮的尺寸改变。

我一直在尝试使用Panel、Anchor、Dock和 Autosize,但没有得到预期的结果。

解决方案

您可以覆盖 ButtonGetPreferredSize 方法,例如:

private class Button3 : Button {

    public Button3() {
        this.AutoSize = true;
        this.AutoSizeMode = AutoSizeMode.GrowAndShrink;
        this.Text = " ";
    }

    public override Size GetPreferredSize(Size proposedSize) {
        Image img = this.BackgroundImage;
        if (img != null) {
            Size sz = img.Size;
            sz.Width += 5;
            sz.Height += 5;
            return sz;
        }

        Size sz2 = base.GetPreferredSize(proposedSize);
        int w = Math.Max(40, sz2.Width);
        sz2.Width = w;
        sz2.Height = w;
        return sz2;
    }
}
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章