2012-12-28 22 views
1

我想從form2的form1中添加一個新項目到列表框中。它背後的想法是最終得到一個不同的項目列表,每個項目都是基於form2活動而彼此不同(或者相同,無關緊要)。說我打開form1(和它有購物清單(列表框)),我打開form2並單擊按鈕,它將在form1中添加「bannana」到列表中。我該怎麼做呢?我已經嘗試了各種方法,例如在form1中添加「addToList(parameter)」方法,然後從form2調用它並傳遞參數,但列表將保持爲空,但其他事物(如消息框等)會彈出等等。解決這個問題?如何將項目添加到不同表單的列表框中?

我使用的形式之一。這種方法將項目添加到列表中,它的工作原理:

public void addToList() 
{ 
    MessageBox.Show("Adding stuff to list"); 
    listEvent.Items.Add("New item 1"); 
    listEvent.Items.Add("new item 2"); 
    MessageBox.Show("Done adding"); 
    listEvent.Refresh(); 
} 

現在,當我試圖從另一個類/表格我用這個稱呼它:

public void changeForm() 
{ 
    EventPlanner mainEventForm = new EventPlanner(); 
    mainEventForm.addToList(); 
} 

或者:

private void btnAddEvent_Click(object sender, EventArgs e) 
{ 
    EventPlanner mainEventForm = new EventPlanner(); 
    mainEventForm.addToList(); 
} 

但它仍然不起作用。雖然當我從form1(eventplanner,列表所在的地方)使用它時,它工作得很好。我甚至將訪問修改器更改爲public,所以不應該成爲問題。

+0

什麼是使用該兩種形式的想法?你爲什麼不能以一種形式來製作它? –

+0

我想做出一個漂亮而整潔的界面,第二種形式將從所選的選項中選擇不同的顏色,表示您選擇藍色或綠色,並且取決於新形式將具有藍色(或綠色)元素等(如果您明白了)。 – zarnokas

+0

您發佈的代碼不起作用,因爲您正在創建EventPlanner表單的新實例,而不是使用已有的實例。 – PhoenixReborn

回答

2

正如我在你的問題的評論中提到的,你可以在Form2上使用公共方法。這是一個簡單的例子。

Form1中

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

    private void button1_Click(object sender, EventArgs e) 
    { 
     Form2 frm2 = new Form2(); 
     if (frm2.ShowDialog(this) == DialogResult.OK) 
     { 
      listBox1.Items.Add(frm2.getItem()); 
     } 
     frm2.Close(); 
     frm2.Dispose(); 
    } 
} 

From2

public partial class Form2 : Form 
{ 
    public Form2() 
    { 
     InitializeComponent(); 
     button1.DialogResult = DialogResult.OK; 
     button2.DialogResult = DialogResult.Cancel; 
    } 

    public string getItem() 
    { 
     return textBox1.Text; 
    } 
} 
+0

是的,這個工作就像一個魅力。非常感謝您的幫助! – zarnokas

+0

@zarnokas不客氣 –

相關問題