0

3つの関連するフォームがあります:

  1. フォーム1:メイン(lst_mainという名前のリストボックスを含む)および「合計価格」というラベル
  2. Form2 = CategoryForm(5つのボタンがあり、新しいsubCategoriesformが開きます
  3. Form3 = SubCategoriesForm(s):このフォームには5つありますが、各フォームにはいくつかのアイテムを含むリストボックスがあり、価格は「ブラウンTシャツ」などです。価格は50などです)

ユーザーは、選択したカテゴリに基づいて「subCategoriesform」からリストから選択し、最後に、さまざまなサブカテゴリから選択したすべてのアイテムをメインリストボックス(メインフォームにあるリストボックス)に表示し、関連するすべての価格をSUMにする必要があります。 「合計価格」として表示されます。

ハッシュテーブルでやろうと思っていたのですが、どう思いますか?これに対するクリーンな解決策はありますか?

4

2 に答える 2

0

前のフォームが選択を取得するために使用できるフォームのビジネス プロパティを指定します。以下の例では、1 つのアイテムを選択できるようになっています。ただし、フォームを閉じる前にユーザーがアイテムのリストを選択できるように調整できます。

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 に答える
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 に答える