簡體   English   中英

C#從不同的彈出窗體列表中計算選定的項目

[英]C# Calculate selected item from list of different popup forms

有3種相關形式:

  1. Form1:Main(包含一個名為lst_main的列表框),標簽為“總價”
  2. Form2 = CategoryForm(有5個按鈕,將打開一個新的subCategoriesform
  3. Form3 = SubCategoriesForm(s):正如我提到的那樣,此表單有5個,每個表單都有一個listBox,其中包含一些項,以及價格,例如“ Brown T Shirt”,價格為50等)

用戶根據所選類別從“ subCategoriesform”的列表中進行選擇,最后,他從不同子類別中選擇的所有項目都應顯示在主列表框中(位於主表單中的列表框中),並且所有相關價格應為SUM並顯示為“總價”。

我當時想用Hashtable做到這一點,您怎么看? 有沒有干凈的解決方案?

首先想到的是以每種形式公開一些清單,並以主要形式獲得它們

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM