每次按下按钮时如何停止面板加载
How to stop a panel loading each time i press it's button
我有一个 Windows 表单应用程序,其中有几个用户控件。
我通过这种方法按下他们的按钮来展示他们;
private void UC_Bring(Control uc)
{
uc.Dock = DockStyle.Fill;
panelControls.Controls.Clear();
panelControls.Controls.Add(uc);
}
例如;
-第一个按钮是 "Home" 按钮。 (这是启动页面)
- 第二个按钮是 "Operation" 按钮。
我单击 "Operation" 按钮并在此用户控件中填充一些文本框。但是,如果我再次单击 "Operation" 按钮,用户控件会自行重置并且文本框会被清除。
如果提到的用户控件正在使用/已经显示在屏幕上,我不想再次显示用户控件。我怎样才能做到这一点?
Screenshot
提前致谢。
我之前试过
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);
}
您很可能每次都创建一个新控件。您只需要 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 { }
我有一个 Windows 表单应用程序,其中有几个用户控件。 我通过这种方法按下他们的按钮来展示他们;
private void UC_Bring(Control uc)
{
uc.Dock = DockStyle.Fill;
panelControls.Controls.Clear();
panelControls.Controls.Add(uc);
}
例如; -第一个按钮是 "Home" 按钮。 (这是启动页面) - 第二个按钮是 "Operation" 按钮。 我单击 "Operation" 按钮并在此用户控件中填充一些文本框。但是,如果我再次单击 "Operation" 按钮,用户控件会自行重置并且文本框会被清除。
如果提到的用户控件正在使用/已经显示在屏幕上,我不想再次显示用户控件。我怎样才能做到这一点?
Screenshot
提前致谢。
我之前试过
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);
}
您很可能每次都创建一个新控件。您只需要 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 { }