【发布时间】:2015-12-22 13:23:22
【问题描述】:
我用 Java 编写了一个数据库程序,现在我希望将其转换为 C# 用于学习目的。
我遇到的一个问题是在同一用户界面中的不同视图之间切换。我想在整个程序中保留一个表单,并在用户浏览程序时更改其上显示的内容。
我试图在表单上添加一个面板,在该表单中添加一个包含按钮的用户控件。单击按钮时,初始用户控件应被处理掉并显示新的用户控件。
这是我目前的代码;
public partial class Form1 : Form
{
UserControl1 myControl1 = new UserControl1();
UserControl2 myControl2 = new UserControl2();
public Form1()
{
InitializeComponent();
panel1.Controls.Add(myControl1);
}
public void PanelVersion2()
{
panel1.Controls.Remove(myControl1);
panel1.Controls.Add(myControl2);
}
}
在我的 UserControl 类中;
public partial class UserControl1 : UserControl
{
public event EventHandler AddControl;
public UserControl1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form1 fm = new Form1();
fm.PanelVersion2();
}
}
}
这种意识形态是创建 UI 的“最佳”方式吗?有没有更有效的方法来在用户界面中移动,同时保持原始表单?
【问题讨论】:
-
我认为你可以使用 BringToFront() 方法来做到这一点。 msdn.microsoft.com/en-us/library/…
-
Winforms 是一个大的乐高盒子,完全由你来拼凑。没有一个总体框架可以强迫你以某种方式做事。你想做的事情会让你走得很远,但你必须知道基本规则。 Controls.Remove() 很危险,您必须在要删除的控件上调用 Dispose() 方法。最好在没有 Remove() 的情况下立即处理它。将这些片段拼接在一起的另一种快速方法是this way。
标签: c# forms visual-studio panel