【问题标题】:Dynamically removing/adding controls on a Windows Forms form在 Windows 窗体窗体上动态删除/添加控件
【发布时间】:2013-04-07 21:40:10
【问题描述】:

我想在运行时在 Windows 窗体窗体上删除和添加一个控件。问题是,控件必须具有与另一个控件完全相同的大小、位置和锚点。

如果用户打开窗口并且满足某个条件,我想删除旧控件并用另一个替换它。

所以,我尝试了这个:

RichTextBox InsideText = new RichTextBox();
InsideText.Location = InsideBox.Location;
InsideText.Size = InsideBox.Size;

Controls.Remove(InsideBox);
Controls.Add(InsideText);

但是,正如预期的那样,它没有用。 InsideBox 未删除,InsideText 未添加。

我做错了什么?有更好的方法吗?

【问题讨论】:

  • 您是否检查了 InsideText 的 Visible 属性是否为真?
  • 这基本上就是我这样做的方式,它对我有用。当您从父控件的集合中删除控件时,它将消失。您确定要从正确的集合中删除它吗?
  • 我认为我从来没有遇到过动态创建/删除控件的问题。您是否确保 Visible 是真实的?您是否尝试过设置 X 和 Y、宽度和高度,而不是使用大小和位置(我总是使用 X、Y、宽度、高度,我认为这是旧习惯),这是我能想到的唯一区别和这个例子。如果我们可以看到任何其他相关代码,可能会有所帮助。

标签: c# winforms


【解决方案1】:

我建议更简单的方法是:

  1. 在正确的位置添加一个面板,并设置正确的锚等。
  2. 在设置为完整的面板内添加 control1 Dock
  3. 只需删除 control1 并在该面板中添加 control2 并将其设置为 Dock。

然后所有大小的东西等都是由一个面板完成的,而不必复制它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 2015-03-03
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多