我想在Windows窗体表单上删除并在运行时添加控件。问题是,控件必须具有与另一个完全相同的大小,位置和锚点。
如果用户打开窗口并满足某个条件,我想删除旧控件并将其替换为另一个。
所以,我试过这个:
RichTextBox InsideText = new RichTextBox();
InsideText.Location = InsideBox.Location;
InsideText.Size = InsideBox.Size;
Controls.Remove(InsideBox);
Controls.Add(InsideText);
但是,正如预期的那样,它没有用。 InsideBox
未被删除,InsideText
未添加。
我做错了什么?有更好的方法吗?
答案 0 :(得分:4)
我建议更简单的方法是:
Dock
然后所有大小的东西等由一个Panel完成,而不是必须复制它。
答案 1 :(得分:0)
注意:我之所以提出替代方法而不是直接解决原始问题,是因为我认为OP发布的代码没有任何问题。
另一种方法是在完全相同的位置在窗体设计器中创建两个控件,并仅在满足条件时切换其可见性。
正如评论中所指出的,这种方法确实有一个缺点,即在设计师中处理表单会变得更加困难。
如果这是一个问题,您仍然可以将Designer用于另一端:仅使用上述方法查看创建“新”控件所需的代码;然后从InitializeComponent
中删除该代码并将其移动到“旧”控件应替换为新控件的位置。这样,您可以确保创建新控件的代码是正确的。