【发布时间】:2017-05-08 08:09:25
【问题描述】:
我有一个拆分容器。在面板 1 中,我有 7 个工具条按钮,当我单击它们时,它们会在面板 2 中打开一个用户控件。用户控件由用户可以填写的不同文本框组成。代码如下所示:
private void toolStripButtonBaseLayers_Click(object sender, EventArgs e)
{
splitContainer1.Panel2.Controls.Clear();
BaseLayers BL = new BaseLayers();
splitContainer1.Panel2.Controls.Add(BL);
}
private void toolStripButtonSpatialCoverage_Click(object sender, EventArgs e)
{
splitContainer1.Panel2.Controls.Clear();
SpatialCoverage SC = new SpatialCoverage();
splitContainer1.Panel2.Controls.Add(SC);
}
private void toolStripButtonFloodMaps_Click(object sender, EventArgs e)
{
splitContainer1.Panel2.Controls.Clear();
FloodMaps FM = new FloodMaps();
splitContainer1.Panel2.Controls.Add(FM);
}
现在,每次我使用单击事件打开另一个用户控件时,用户控件都会为空,因为我清除了面板并打开了一个新的用户控件。这不是我想做的!
我的问题是如何保存您在文本框中填写的所有内容?以及如何在它们之间切换时仍然填充所有用户控件值?例如,我填写用户控件 BaseLayers,我切换到用户控件 Spatial Coverage 和 Flood Maps,当我切换回用户控件 BaseLayers 时,仍然需要填写所有内容。
【问题讨论】:
-
使用 Controls.Clear() 是非常危险的,它不会处理被删除的控件。它们将在应用程序的整个生命周期内导致泄漏。但碰巧它正是你似乎想要的。您必须跟踪它们的引用,这样您就可以避免创建新实例并简单地重复使用现有实例。
-
用户控件的加载和关闭事件是否可能?或者你怎么看?
标签: c# user-controls