2011-06-13 96 views
0

我想從一個單獨的窗體中獲取數組列表的值,並將它們添加到另一個窗體上的組合框。我已經在form2中試過了。C#添加數組列表值到組合框從一個窗體到另一個窗體

foreach (string fname in newname) 
{ 
    form1.comboBox1.Items.Add(fname); 
} 

但它不會將值發送到組合框。現在,如果我添加此Form1上

base.AddOwnedForm(form2) 

,這在窗口2

Form1 form1=(Form1)this.Owner 

它的工作原理,但Form1中會隱藏自身,並當你點擊「X」按鈕將不會關閉。 (這似乎是form2的繼承屬性)。

任何幫助將是偉大的!

+1

爲什麼你在foreach循環中使用newname [x]?不應該只是form1.comboBox1.Items.Add(fname);? – Grizzly 2011-06-13 22:38:34

+0

發佈更多程序代碼。具體來說,Show/ShowDialog。我懷疑當你改變爲AddOwnedForm時,它不再是一個對話框。 – 2011-06-13 22:38:36

+0

對不起,它被origionaly設置爲form1.comboBox1.Items.Add(fname);只是在玩它,並試圖在陽光下的一切。 – user770344 2011-06-13 23:24:57

回答

1

我不確定這是否是您需要的。我希望它是:)。我正在學習C#+ winforms,所以我把你的問題當作練習。

我已經創建了兩個簡單的形式(所有控件默認命名)

Simple forms

第一種形式的代碼:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     Form2 newForm = new Form2(this); 
     newForm.Show(); 
    } 

    public void UpdateCombo(List<String> newName) 
    { 
     comboBox1.Items.Clear(); 
     foreach (string fname in newName) 
     { 
      comboBox1.Items.Add(fname); 
     } 
     comboBox1.SelectedIndex = 0; 
    } 
} 

第二種形式代碼:

public partial class Form2 : Form 
{ 
    List<String> newName; 
    Form1 parent; 

    public Form2(Form1 parentIn) 
    { 
     parent = parentIn; 
     InitializeComponent(); 
    } 

    void UpdateList() 
    { 
     newName = new List<String>(); 
     for (int i = 1; i <= numericUpDown1.Value; i++) 
     { 
      if (i == 1) 
       newName.Add("1 duck"); 
      else 
       newName.Add(i.ToString() + " ducks"); 
     } 
    } 

    private void numericUpDown1_ValueChanged(object sender, EventArgs e) 
    { 
     UpdateList(); 
     parent.UpdateCombo(newName); 
    } 
} 

我希望代碼是自我解釋的,如果不是隨意問的話。如果有人比我更有經驗會檢查和批准,那也會更好。

+0

太棒了,完全按照我需要的方式工作!謝謝! – user770344 2011-06-14 15:22:42

0

從父母到孩子發送內容非常簡單。當你朝另一個方向前進時,你通常會更好地設置「事件處理」,允許「傳回」值。

我不確定這是「最佳」教程,但它涵蓋了使用代表在窗體之間傳遞信息的「事件處理」:http://www.codeproject.com/KB/cs/PassDataWinForms.aspx。我認爲這將是一個很好的開始瞭解事件處理如何自己編寫代碼而不是依賴於雙擊設計器中的表單元素的好地方。

相關問題