C# 从不同弹出窗体的列表中计算所选项
本文关键字:列表 计算所 选项 窗体 | 更新日期: 2023-09-27 18:34:39
有3种相关形式:
- 表单 1:主(包含名为 lst_main 的列表框(并标记为"总价">
- Form2 = 类别窗体(有 5 个按钮,这将打开一个新的子类别窗体
- Form3 = 子类别表单:正如我提到的,此表单有 5 个,每个表单都有一个包含一些项目的列表框,以及价格,例如"棕色 T 恤",它的价格为 50 等(
用户根据所选类别从"子类别表单"列表中选择,最后,他从不同子类别中选择的所有项目都应显示在主列表框中(位于主窗体的列表框(,并且所有相关价格应为SUM并显示为"总价"。
我想用哈希表来做,你怎么看? 有没有干净的解决方案?
首先想到
的是在每个表单中制作一些公共列表,并在主表单中获取它们
//some where in Main Form
Form2 _frm=new Form2();
listofall.Concat(_frm.listofform2); //listofall is list of Main Form
//Make same to all other forms
为表单提供业务属性,使以前的表单可用于获取选择。在下面的示例中,它只允许单个项目选择。但是,您可以对其进行调整,以允许用户在关闭窗体之前选择项目列表。
public class BaseSelectionForm : Form
{
public string Selection { get; protected set; }
}
public class MainForm : Form
{
public List<string> Selections { get; set; }
private void ButtonClick(object sender, EventArgs e)
{
using (var dialog = new CategoryForm())
{
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Selections.Add(dialog.Item);
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
else
{
this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
}
}
}
}
public class CategoryForm : BaseSelectionForm
{
private void ButtonClick(object sender, EventArgs e)
{
using (var dialog = new SubCategoryForm())
{
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Selection = "This Category Name > " + dialog.Item;
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
else
{
this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
}
}
}
}
public class SubCategoryForm : BaseSelectionForm
{
private void ButtonClick(object sender, EventArgs e)
{
Selection = "Brown Shirt / $34.00";
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
}