4

C#のコードがあります。リストビューがあります。必要なのは、サブアイテムの値、具体的には注文の小計価格を含む小計サブアイテムの値を取得することです。値を合計して表示し、同じ形式のテキストボックスに表示したいと思います。どうやってやるの?これが私のコードです:

AddOrderForm add = new AddOrderForm();
        foreach (DataRow drow in dt.Rows)
        {
            add.nametb.Text = drow["Menu"].ToString();
            add.Pricetb.Text = drow["MenuPrice"].ToString();
            add.listBox1.Items.Add(drow["MenuDesc"].ToString());
            add.orderqtytb.Focus();
            add.ShowDialog();                
        }
        if (add.isAddOrder)
        {

            ListViewItem item = new ListViewItem();
            item.Text = add.nametb.Text;
            item.SubItems.Add(add.orderqtytb.Text);
            item.SubItems.Add(add.Pricetb.Text);              

            double total = 0;
            try
            {
                total = double.Parse(add.Pricetb.Text) * double.Parse(add.orderqtytb.Text);
            }
            catch
            {
                total = 0;
            }
            item.SubItems.Add(total.ToString("0.00"));
            Listview.Items.Add(item);
4

3 に答える 3

2

あなたのコードはすでにListviewにアイテムを正しく追加しています.SelectedIndexChangedイベントで列「合計」の値を取得したいと仮定すると、次のことができます-

ListView.Items[SelectedItemIndex].SubItem[2].Text
于 2013-03-21T08:03:15.903 に答える
1

次の方法でItem値またはその値を取得できます。SubItemsListView

ListView が次のようになっているとします。

public void AddDataToLvw(){
            ListViewItem item1 = new ListViewItem("item1", 0);
            item1.SubItems.Add("1");
            item1.SubItems.Add("3");

            ListViewItem item2 = new ListViewItem("item2", 1);
            item2.SubItems.Add("4");
            item2.SubItems.Add("6");

            ListViewItem item3 = new ListViewItem("item3", 0);
            item3.SubItems.Add("7");
            item3.SubItems.Add("9");

            // Create columns for the items and subitems.
            listView1.Columns.Add("Item Column", -2, HorizontalAlignment.Left);
            listView1.Columns.Add("Column 2", -2, HorizontalAlignment.Left);
            listView1.Columns.Add("Column 3", -2, HorizontalAlignment.Left);

            listView1.Items.AddRange(new ListViewItem[] { item1, item2, item3 });

}

次に、次のようにそのサブアイテムにアクセスできます。

 private void GetSubItems()
    {
        int total = 0;
        foreach (ListViewItem item in listView1.Items)
        {
            total += Convert.ToInt32(item.SubItems[1].Text);

        }
        MessageBox.Show(total.ToString());
    }

渡したインデックスに注目してitem.SubItemsください。合計したいサブアイテムインデックスを渡す必要があります

于 2013-03-21T08:02:08.427 に答える
1

このようなクラスを構築したいと思います

class MyClass
{
    public string PropertyA { get; set; }
    public string PropertyB { get; set; }
    public string PropertyC { get; set; }
    public string PropertyD { get; set; }
}

このクラスを生成する Listview を作成するときに、プロパティを入力し、クラスのオブジェクトを ListViewItem のタグに追加します。

MyClass myClass = new MyClass();
myClass.PropertyA = "A";
myClass.PropertyB = "B";
myClass.PropertyC = "C";
myClass.PropertyD = "D";

ListViewItem item = new ListViewItem();
item.Text = myClass.PropertyA;
item.SubItems.Add(myClass.PropertyB);
item.SubItems.Add(myClass.PropertyC);
item.Tag = myClass;

これで、タグからオブジェクトを取得でき、値を取得できます

MyClass myClassForLaterUse = (MyClass)item.Tag;
MessageBox.Show(myClassForLaterUse.PropertyA);
于 2013-03-21T07:55:54.407 に答える