2017-04-17 52 views
0

我TREID添加的項從另一形式 到的ListView其Form 1中方法(一個位於列表視圖)從另一種形式中添加列表視圖項

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

和它的窗口2(從還有我不會添加的產品)

 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:'調用或BeginInvoke不能在控件上調用,直到窗口句柄被創建。'

我該如何解決?

感謝

+0

你需要傳遞數據時使用的表格的實例。看到我的兩個表單解決方案:http://stackoverflow.com/questions/34975508/reach-control-from-another-page-asp-net – jdweng

回答

0

試試這個

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