【问题标题】:C# - Adding new control to the form screws up placement of other controlsC# - 向表单添加新控件会破坏其他控件的放置
【发布时间】:2015-02-08 02:33:12
【问题描述】:

在 C# Windows Forms App 中,我在表单类的运行时向表单添加了一个新控件:

this.Controls.Add( new Label() );

如果我在窗体最小化时执行此操作,它会破坏窗体上其他控件的放置,这些控件设置了 Anchor 属性:它们变得比窗体大,我无法通过调整窗体大小来修复它。

我做错了什么?

编辑:它似乎只影响将 Anchor 属性设置为 Right 或 Bottom 或两者兼有的控件。

【问题讨论】:

  • 如果您没有提供任何有关坐标、大小、锚定等的详细信息,您希望标签出现在哪里?
  • 这是一个测试用例。在我的代码中,我确实给出了坐标,但行为是相同的。
  • 您能否提供一个小样本来重现您的问题?
  • 请贴出您实际使用的代码。
  • 这是我目前实际使用的代码。除此之外,我在 VS 的 GUI 中有一个 Anchor 属性设置为 Top、Left、Right、Bottom 的组框。计时器运行我发布的代码。我最小化表单,计时器执行代码,将窗口和组框恢复到右侧和底部。

标签: c# winforms forms resize controls


【解决方案1】:

我建议将新标签添加到已经存在和/或锚定的面板(或其他容器)中。

this.panel1.Controls.Add(new Label());

请参阅 MSDN 上的以下文章:http://msdn.microsoft.com/en-us/library/aa984275(v=vs.71).aspx

【讨论】:

  • 我刚试过这个。我在运行时将标签添加到锚定的组框。它里面有一个文本框。在表单最小化并恢复表单的同时添加新标签后,文本框变得比组框更宽。
  • 该文本框的锚点设置为:上、左、右
  • 我将尝试的下一步是 SuspendLayout 和 ResumeLayout,如 MSDN 上所示
猜你喜欢
  • 2017-10-24
  • 2011-07-18
  • 1970-01-01
  • 2019-10-26
  • 2019-01-22
  • 1970-01-01
  • 1970-01-01
  • 2015-04-30
  • 2014-12-20
相关资源
最近更新 更多