我有一个Windows Form应用程序,并且其中有多个用户控件。 我通过这种方法按下他们的按钮来显示它们;
private void UC_Bring(Control uc)
{
uc.Dock = DockStyle.Fill;
panelControls.Controls.Clear();
panelControls.Controls.Add(uc);
}
例如; -第一个按钮是“主页”按钮。 (这是启动页面) -第二个按钮是“操作”按钮。 我单击“操作”按钮,然后在此用户控件中填充一些文本框。但是,如果我再次单击“操作”按钮,则用户控件将重置自身,并且文本框将被清除。
如果所提到的用户控件正在使用中/已经显示在屏幕上,我不想再带给用户控件。我怎样才能做到这一点?
谢谢。
我之前尝试过
private void UC_Bring(Control uc)
{
uc.Dock = DockStyle.Fill;
if (uc.Visible!=true)
{
panelControls.Controls.Clear();
panelControls.Controls.Add(uc);
}
}
我用按钮单击事件以及带来方法来编辑它;
private void UC_getir(Control uc) //User control çağırma metodu
{
uc.Dock = DockStyle.Fill;
panelControls.Controls.Clear();
panelControls.Controls.Add(uc);
}
private void BtnOp_Click(object sender, EventArgs e)
{
UC_Op ucOp = new UC_Op();
UC_getir(ucOp);
}
答案 0 :(得分:1)
您很可能每次都创建一个新控件。您只需分别Clear()
Panel
和Add()
新UserControl
每一次不同的点击。如果UserControl
不在容器中,则它将不可见。这意味着您也不必无所事事。这是一个完全可行的解决方案。
public partial class Form1 : Form
{
private ucHome HomeUserControl = new ucHome();
private ucOperations OperationsUserControl = new ucOperations();
private ucMaterials MaterialsUserControl = new ucMaterials();
private ucSettings SettingsUserControl = new ucSettings();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
HomeUserControl.Dock = DockStyle.Fill;
OperationsUserControl.Dock = DockStyle.Fill;
MaterialsUserControl.Dock = DockStyle.Fill;
SettingsUserControl.Dock = DockStyle.Fill;
}
private void UC_Bring(Control uc)
{
panelControls.Controls.Clear();
panelControls.Controls.Add(uc);
}
private void btnHome_Click(object sender, EventArgs e)
{
UC_Bring(HomeUserControl);
}
private void btnOperations_Click(object sender, EventArgs e)
{
UC_Bring(OperationsUserControl);
}
private void btnMaterials_Click(object sender, EventArgs e)
{
UC_Bring(MaterialsUserControl);
}
private void btnSettings_Click(object sender, EventArgs e)
{
UC_Bring(SettingsUserControl);
}
}
public class ucHome : UserControl { }
public class ucOperations : UserControl { }
public class ucMaterials : UserControl { }
public class ucSettings : UserControl { }