0

有3种相关形式:

  1. Form1:Main(包含一个名为 lst_main 的列表框)并标记为“总价”
  2. Form2 = CategoryForm(有5个按钮,打开一个新的subCategoriesform
  3. Form3 = SubCategoriesForm(s):正如我提到的,这个表单有 5 个,每个表单都有一个包含一些项目的列表框,以及价格,例如“棕色 T 恤”,它的成本为 50 等)

用户根据所选类别从“subCategoriesform”列表中进行选择,最后他从不同子类别中选择的所有项目都应显示在主列表框(位于主窗体的列表框)中,并且所有相关价格都应为 SUM并显示为“总价”。

我想用 Hashtable 来做,你觉得呢?有什么干净的解决方案吗?

4

2 回答 2

0

首先想到的是在每种形式中制作一些公开列表并以主要形式获取它们

//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
于 2012-05-17T12:11:10.573 回答
0

为您的表单提供前一个表单可用于获取选择的业务属性。在下面的示例中,它只允许选择单个项目。但是您可以调整它以允许用户在关闭表单之前选择项目列表。

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;
    }
}
于 2012-05-17T12:14:12.013 回答