【问题标题】:C# Calculate selected item from list of different popup formsC#从不同的弹出表单列表中计算所选项目
【发布时间】:2012-05-24 23:29:33
【问题描述】:

有3种相关形式:

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

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

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

【问题讨论】:

    标签: c# forms collections listbox hashtable


    【解决方案1】:

    首先想到的是在每个表单中创建一些公开列表,然后在主表单中获取它们

    //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
    

    【讨论】:

    • 非常感谢您的快速回答,我传递的数据是这样的 {(brown shirt 1, 40$), (yellow shirt 1, 15$), ...} 和我需要在主列表框中显示数据的第一部分,并对选定的值求和,并将它们显示在一个名为 _totalPrice 的文本框中
    • @Pouria 你还需要帮助吗?
    【解决方案2】:

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

    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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-01
      • 2022-12-23
      • 2018-10-15
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多