【问题标题】:add listview item from another form从另一个表单添加列表视图项
【发布时间】:2017-09-13 00:30:36
【问题描述】:

我很想从另一个表单将项目添加到列表视图 它是form1中的方法(位于listview之一)

private void AfterAdd_DoWork(object sender, DoWorkEventArgs e)
        {
            int[] sizes = SellBL.Product.GetProdStockByID(prodid);

            ListViewItem Item = new ListViewItem(prodid.ToString());
            Item.SubItems.Add(prodname);
            Item.SubItems.Add(ebayid);
            Item.SubItems.Add("$" + sellprice);

            if (!isnosize)
            {
                for (int i = 0; i < sizes.Length; ++i)
                {
                    if (sizes[i] == 1)
                    {
                        Item.UseItemStyleForSubItems = false;
                        var subItem = Item.SubItems.Add("In Stock");
                        subItem.ForeColor = Color.Green;
                    }
                    else if (sizes[i] == 0)
                    {
                        Item.UseItemStyleForSubItems = false;
                        var subItem = Item.SubItems.Add("Out Of Stock");
                        subItem.ForeColor = Color.Red;
                    }
                    else if (sizes[i] == 2)
                    {
                        Item.UseItemStyleForSubItems = false;
                        var subItem = Item.SubItems.Add("Less Than 3");
                        subItem.ForeColor = Color.Orange;
                    }
                    else if (sizes[i] == 5)
                    {
                        Item.UseItemStyleForSubItems = false;
                        var subItem = Item.SubItems.Add("Less Than 5");
                        subItem.ForeColor = Color.Orange;
                    }
                    else if (sizes[i] == 10)
                    {
                        Item.UseItemStyleForSubItems = false;
                        var subItem = Item.SubItems.Add("Less Than 10");
                        subItem.ForeColor = Color.Orange;
                    }
                }
            }
            else
            {
                if (sizes[0] == 1)
                {
                    Item.UseItemStyleForSubItems = false;
                    var subItem = Item.SubItems.Add("In Stock");
                    subItem.ForeColor = Color.Green;
                }
                else if (sizes[0] == 0)
                {
                    Item.UseItemStyleForSubItems = false;
                    var subItem = Item.SubItems.Add("Out Of Stock");
                    subItem.ForeColor = Color.Red;
                }
                else if (sizes[0] == 10)
                {
                    Item.UseItemStyleForSubItems = false;
                    var subItem = Item.SubItems.Add("Few Left");
                    subItem.ForeColor = Color.Orange;
                }
            }
            ProductListView.Invoke(new MethodInvoker(delegate () { ProductListView.Items.AddRange(new ListViewItem[] { Item }); }));
        }

它是form2(我不会从那里添加产品)

        private void backgroundWorkerAddProd_DoWork(object sender, DoWorkEventArgs e)
        {
            string a = Addprodnametxt.Text.ToString();
            string b = Addprodebayidtxt.Text.ToString();
            string c = addprodsellpricetxt.Text.ToString();

            f1.AfterProductAdded(1, a, b, c, false);
        }

我试过方法:ProductListView.items.add(item); 但它不起作用 当我尝试这种方法时: ProductListView.Invoke(new MethodInvoker(delegate () { ProductListView.Items.AddRange(new ListViewItem[] { Item }); })); 我收到了这个错误: System.InvalidOperationException: '在创建窗口句柄之前,不能对控件调用 Invoke 或 BeginInvoke。'

我该如何解决?

谢谢

【问题讨论】:

标签: c# listview invoke


【解决方案1】:

试试这个

  if (System.Windows.Forms.Application.OpenForms["yourForm"] != null)
    {
       (System.Windows.Forms.Application.OpenForms["yourForm"] as Form1).AfterAdd_DoWork();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多