如何重用表单(并在需要时更改其上下文)以避免出现多个相同的表单? C#
How to reuse a form ( and change its context when needed) to avoid multiple identical forms? C#
我正在用 C# (Visual Studio 2015) 制作一个 windows 表单应用程序,当涉及到它们拥有的控件时,许多表单应该是相似或相同的。我没有单独制作所有这些相似的表单(因为我最终会得到很多表单,这最终会减慢应用程序的速度),而是制作了一个基本表单并从中继承了其他表单。但是,我仍然得到了很多表格,它们只是继承的表格(我猜代码更少)。
我知道用户控制,但我不认为那是我想要的。这使工作更容易,从某种意义上说,而不是从底部制作所有这些表格,我可以只添加这个,它会没事的。问题是我仍然必须将用户控件添加到某些东西 - 添加到表单?我希望能够在 class.
内完成所有这些
EXAMPLE:这是我想要实现的一个例子,也许它会把事情弄清楚:假设我想制作一张欧洲的交互式地图 - 我想要人能够单击一个国家并获取有关它的信息(以新的 window - winform 的形式)。现在每个国家/地区都有完全相同的 window(表单)——它们都有一个文本框、两个按钮、一个图片框和一个标签,唯一不同的是这些控件中的信息。现在不是制作 50 window 个看起来完全相同(但具有不同信息)的表格,有没有更实用的方法来做到这一点?我知道我可以制作一个 UserControl 并将其添加到表单,但我仍然必须制作所有这 50 个表单并添加 UserControl。恐怕一个简单的应用程序中有这么多表单会减慢它的速度,而且这似乎不是一种有效的方法。我想制作一个包含所有这些东西的基本表单,然后使用 class 允许编辑信息 - 当人们单击某个按钮(国家/地区)时,将调用基本表单但使用来自另一个的信息class 连接到该特定按钮,例如如果一个人点击意大利,他们会得到基础表格,但它会有关于意大利的信息(文本框会有意大利历史,有意大利的照片......)但是如果一个人点击德国,他们也会得到基础表格,但这次它有关于德国的信息。
为什么每个国家/地区都需要一个新表格 class? class 的想法是它拥有共同的行为。表格是 class。只需用它需要显示的数据实例化 class 的一个实例。创建一个数据 class 来封装表单显示的数据(如地图图像、描述、历史记录等)并在显示之前将 class 传递给表单。
例如:
public class Country
{
public string Name {get;set;}
public string Description {get;set;}
public string MapUrl {get;set;}
public string History {get;set;}
//any other properties you need to set. Get these from a database or text file if you want
}
在表单中添加如下方法:
public void SetCountry(Country country)
{
//assumung you have controls on your form for displaying the data:
Text = country.Name;
txtDescription.Text = country.Description;
txtHistory.Text = country.History;
//etc.
}
我正在用 C# (Visual Studio 2015) 制作一个 windows 表单应用程序,当涉及到它们拥有的控件时,许多表单应该是相似或相同的。我没有单独制作所有这些相似的表单(因为我最终会得到很多表单,这最终会减慢应用程序的速度),而是制作了一个基本表单并从中继承了其他表单。但是,我仍然得到了很多表格,它们只是继承的表格(我猜代码更少)。
我知道用户控制,但我不认为那是我想要的。这使工作更容易,从某种意义上说,而不是从底部制作所有这些表格,我可以只添加这个,它会没事的。问题是我仍然必须将用户控件添加到某些东西 - 添加到表单?我希望能够在 class.
内完成所有这些EXAMPLE:这是我想要实现的一个例子,也许它会把事情弄清楚:假设我想制作一张欧洲的交互式地图 - 我想要人能够单击一个国家并获取有关它的信息(以新的 window - winform 的形式)。现在每个国家/地区都有完全相同的 window(表单)——它们都有一个文本框、两个按钮、一个图片框和一个标签,唯一不同的是这些控件中的信息。现在不是制作 50 window 个看起来完全相同(但具有不同信息)的表格,有没有更实用的方法来做到这一点?我知道我可以制作一个 UserControl 并将其添加到表单,但我仍然必须制作所有这 50 个表单并添加 UserControl。恐怕一个简单的应用程序中有这么多表单会减慢它的速度,而且这似乎不是一种有效的方法。我想制作一个包含所有这些东西的基本表单,然后使用 class 允许编辑信息 - 当人们单击某个按钮(国家/地区)时,将调用基本表单但使用来自另一个的信息class 连接到该特定按钮,例如如果一个人点击意大利,他们会得到基础表格,但它会有关于意大利的信息(文本框会有意大利历史,有意大利的照片......)但是如果一个人点击德国,他们也会得到基础表格,但这次它有关于德国的信息。
为什么每个国家/地区都需要一个新表格 class? class 的想法是它拥有共同的行为。表格是 class。只需用它需要显示的数据实例化 class 的一个实例。创建一个数据 class 来封装表单显示的数据(如地图图像、描述、历史记录等)并在显示之前将 class 传递给表单。 例如:
public class Country
{
public string Name {get;set;}
public string Description {get;set;}
public string MapUrl {get;set;}
public string History {get;set;}
//any other properties you need to set. Get these from a database or text file if you want
}
在表单中添加如下方法:
public void SetCountry(Country country)
{
//assumung you have controls on your form for displaying the data:
Text = country.Name;
txtDescription.Text = country.Description;
txtHistory.Text = country.History;
//etc.
}