2013-12-11 94 views
0

我的構造函數有問題。我把它設置是這樣的:將listBox傳遞給一個新表格

Form1中:

private void button10_Click(object sender, EventArgs e) 
{ 
    var form2 = new Form2(listBox1); 
    form2.Show(); 
    this.Hide(); 
} 

窗體2:

public Form2(ListBox listBox) 
{ 
    InitializeComponent(); 
    listBox1.Items=listBox.Items; 
} 

我只是想從列表框中發送的Form1上我的數據,我的窗體2列表框但它給了我這個錯誤:

Property or indexer 'System.Windows.Forms.ListBox.Items' cannot be assigned to -- it is read only.

+0

那麼錯誤是不言自明的。您無法設置「Items」屬性,因爲它是隻讀的 - 讀取[docs](http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox。項目(v = vs.110).aspx),以便如何將數據分配給列表框。此外,你應該真的重命名'var form1'這是一個*真*誤導性的變量名稱 – CodingIntrigue

+0

謝謝,但你知道我怎麼能從第一個窗體上的列表框中的項目到第二個窗體並顯示它在該lisBox。我新來的C#。 – user2048546

回答

2

您可以使用Sampath的答案,這是完全正確的。但爲了可讀性和更短的代碼,您可以使用ListBox.ObjectCollection.AddRange Method

public Form2(ListBox listBox) 
{ 
    InitializeComponent(); 
    listBox1.Items.AddRange(listBox.Items); 
} 
+0

謝謝,它終於有效。 – user2048546

+0

沒問題,很高興我能幫到你。 – Abbas

2

listBox.Items是隻讀屬性。您需要使用listBox.Items.Add() or AddRange()方法。

//From form1 pass only your listbox items. 
    private void button10_Click(object sender, EventArgs e) 
     { 

      var form2 = new Form2(listBox1.Items); 
      form2.Show(); 
      this.Hide(); 
     } 


//In your form2 you can use AddRange() 
    public Racun(ListBox.ObjectCollection Items) 
     { 
      InitializeComponent();  

      listBox1.Items.AddRange(items); 

     } 
+0

所以它從這裏去:listBox1.Items = listBox.Items;對此:listBox1.Items.Add(listBox.Items);? – user2048546

+0

你爲什麼要改變你的環路解決方案?!你的已經是正確的了。 – Abbas

+0

這一個並沒有以你的方式工作。但你們都幫助過我。 – user2048546