gpt4 book ai didi

c# - 面板在 MdiContainer 中更改其大小

转载 作者:行者123 更新时间:2023-11-30 14:32:24 26 4
gpt4 key购买 nike

我们在这里遇到了一个小问题,这让我们很恼火。让我快速解释一下我们在做什么:

我们正在创建一个 Windows 窗体,将其保存为 .DLL 并加载一个 MDIContainer。看起来不错,工作正常,除了,如果我们在我们的表单中使用面板作为组件,它会改变大小。

之前:

enter image description here

之后(在 MDIContainer 中):

enter image description here

(注意面板!)。

我们猜测这是因为我们的自定义 MDI 容器。这是我们的 MDI 容器的代码:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace NAMESPACE.Forms
{
class MdiClientPanel : Panel
{
private Form mdiForm;
private MdiClient ctlClient = new MdiClient();

public MdiClientPanel()
{
this.ctlClient.BackColor = Color.LightGray;
base.Controls.Add(this.ctlClient);
}

public Form MdiForm
{
get
{
if (this.mdiForm == null)
{
this.mdiForm = new Form();
System.Reflection.FieldInfo field = typeof(Form).GetField("ctlClient", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
field.SetValue(this.mdiForm, this.ctlClient);
}
return this.mdiForm;
}
}
}
}

有什么办法可以解决这个问题吗?感谢您的帮助。

//编辑:添加赏金,因为我们想知道为什么会这样。如何重现它:

  1. 将我们的 MDIClientPanel 代码复制到新项目的新类中
  2. 创建第二个窗体,在其中放置一些控件。
  3. 在 MDIClient 面板中加载表单。
  4. 编译并查看第二个窗体的大小是如何变化的。

如果您像这样打开第二个表单,就可以解决这个问题:

SecondForm Form = new SecondForm();
Form.MdiParent = this.MdiClientPanel.mdiForm;
Form.Size.Width += 35; //THIS PART WILL FIX
Form.Size.Height += 20; //THIS PART WILL FIX IT
Form.Show();

但这不可能是唯一的解决方案,因为它有点可疑......

最佳答案

之所以会出现这种情况,是因为面板的边界没有设置。

您应该可以通过以下方式之一解决这个问题:1 - 停靠面板;

var x = new MdiClientPanel{Dock = DockStyle.Fill};
Controls.Add(x); //Add the control to the form

2 - 将面板固定到所有角落;

x.Anchor = AnchorStyles.Top;
x.Anchor = AnchorStyles.Right;
x.Anchor = AnchorStyles.Left;
x.Anchor = AnchorStyles.Bottom;

我能够重现此错误并使用上述方法更正它。

锚定(之前):

enter image description here

锚定(调整父级大小后):

enter image description here

码头(之前):

enter image description here

停靠(调整父级大小后):

enter image description here

希望这对您有所帮助。

关于c# - 面板在 MdiContainer 中更改其大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18552176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com