如何在父窗体调整大小时更改面板控件的大小

3
我正在使用此代码来更改panel控件在最大化正常状态下的大小,这很有效,但我不知道如何根据我的背景图片重新调整面板大小,当用户重新调整窗体大小而不是最小化、最大化和正常状态时,即使用鼠标。我该如何使用一些计算代码或其他方式实现这一点?
private void ParentHome_ClientSizeChanged(object sender, EventArgs e)
{
    if (this.WindowState == FormWindowState.Maximized)
    {
        this.Panel1.Size = new System.Drawing.Size(227, 324);
        this.Panel1.Location = new System.Drawing.Point(69, 223);
    }
    else if (this.WindowState == FormWindowState.Normal)
    {
        this.Panel1.Size = new System.Drawing.Size(198, 289);
        this.Panel1.Location = new System.Drawing.Point(60, 193);
    }
}

Enter image description here

1个回答

0

你不需要处理任何事件。只需使用Anchor属性:

Panel1.Anchor = AnchorStyles.Left | AnchorStyles.Top | 
                AnchorStyles.Right | AnchorStyles.Bottom;

我尝试了锚定属性,但它不适用于我的背景图片,因此使用了这个事件。我正在使用以下代码来拉伸背景图片:foreach (Control ctl in this.Controls) { if (ctl is MdiClient) { ctl.BackgroundImage = Properties.Resources.bg; this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; break; } } 当窗体大小调整时,如何更改面板大小? - Durga
@Durga,你能否发布一些屏幕截图来展示当使用Anchor时它如何不适配你的BackgroundImage?因为如果使用Anchor对你不起作用,那么通过自己调整面板大小也无法解决。实际上,Anchor会自动调整大小和位置。 - King King
1
@HansPassant,我甚至不明白用户想要拉伸什么,根据问题标题,应该使用正确的锚定设置进行调整大小。顺便问一下,您所说的“乘数”是什么意思? - King King
我已经添加了一张图片,显示正常状态(左侧)和调整大小后的状态(右侧),数据面板正在超出背景图中的橙色框。 - Durga
@Durga 顺便说一下,你的问题应该重新表述一下。橙色框是什么?它只是绘制在 BackgroundImage 上的一个框吗?如果你想在调整 BackgroundImage 大小时保留某些东西在 橙色框 内,当然 Anchor 不起作用,但自己调整大小并不容易。你必须知道 橙色框 相对于 BackgroundImage大小和位置比例。无论如何,你似乎有一个错误的解决实际问题的方法。 - King King
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接