【发布时间】:2017-12-13 07:39:32
【问题描述】:
我有一个 Windows 窗体,它允许不同的用户控件通过不同的按钮显示和隐藏。
我希望此用户控件能够直接相互通信并更改值等。
例如下面的usercontrol1
用户将填写表单,然后当他们单击继续时,usercontrol1 应该关闭并且 usercontrol2 现在应该可见,并且用户信息被选中并显示如下
到目前为止,我有下面的代码
private void btnProceed_Click(object sender, EventArgs e)
{
string name = tbName.ToString();
string email = tbEmail.ToString();
string phone = tbPhone.ToString();
string color = tbColor.ToString();
this.Hide();
UserControl2 u2 = new UserControl2();
MainForm f1 = new MainForm();
f1.panelMain.Controls.Add(u2);
f1.listView1.Items.Add(new ListViewItem(new[]{
name,
email,
phone,
color}));
}
它不起作用。只有 usercontol1 是隐藏的,我留下了一个空白。 我做错了什么?
(使用visual studio 13和c#语言)
【问题讨论】:
-
因为您正在创建 MainForm 的新实例并将新的用户控件添加到该实例。如果您添加 f1.Show();,您将看到它。但是我假设您想将新的用户控件添加到 MainForm 的现有实例中
-
@steve Yes ....如何在不创建 MainForm 的新实例的情况下添加控件?
-
以最简单的方式将当前 MainForm 的实例传递给 UserControl 构造函数,将该实例保存在 UserControl 的全局变量中,并在需要切换两个用户控件时使用该实例。这对于正确处理其他任务将是有问题的。我建议重新设计您的应用程序,让 MainForm 决定在需要时显示哪个用户控件。
标签: c# forms visual-studio navigation user-controls