我有一個程序需要來自另一個表單的數據,我需要傳遞它而不創建第一個表單的新實例。我怎樣才能做到這一點?將數據傳遞到現有表格
ex。
Form2 f2 = new Form2();
f2.showdialog();
時F2顯示,他們是項目的列表視圖,當我點擊一個項目,我想這個項目被髮送回第一種形式,但不關閉窗口2並沒有實例化一個新的Form1中。
我有一個程序需要來自另一個表單的數據,我需要傳遞它而不創建第一個表單的新實例。我怎樣才能做到這一點?將數據傳遞到現有表格
ex。
Form2 f2 = new Form2();
f2.showdialog();
時F2顯示,他們是項目的列表視圖,當我點擊一個項目,我想這個項目被髮送回第一種形式,但不關閉窗口2並沒有實例化一個新的Form1中。
我需要通過它而不創建第一個窗體的新實例。
這意味着您的第一個窗體在後臺打開。您可以使用Application.OpenForms
屬性獲取已經打開的表單,然後從那裏獲取數據。 是這樣的:
Form2 f2 = Application.OpenForms["Form2"] as Form2;
if(f2 != null)
string data = f2.SomeProperty;
創建在Form1增變(組)方法。當您希望將數據傳回form1時,請調用mutator方法來更新表單。
您正在尋找某種事件。
public event EventHandler MyButtonClicked;
並且在使用ShowDialog()之前;
Form2 f2 = new Form2();
f2.MyButtonClicked += f2_MyButtonClicked;
f2.showdialog();
而且地方來處理該事件
void f2_MyButtonClicked(object sender, EventArgs e)
{
//Here you want to grab your list. You can get f2 from sender.
Form2 f2 = (Form2)sender;
throw new NotImplementedException();
}
當您在窗體2單擊引發事件的按鈕。
void myButtonClicked(object sender, EventArgs e)
{
if (MyButtonClicked != null)
{
MyButtonClicked(this, new EventArgs());
}
}
如果你想了解更多的事件,請看看。
http://msdn.microsoft.com/en-us/library/aa645739%28v=vs.71%29.aspx
也許最簡單的辦法就是在Form1
可公開訪問的方法,知道如何處理新項目。然後在Form2
中有對Form2
對象的引用。 Form2
有一個屬性,或者您設置Form1
作爲父母Form2 f2 = new Form2(f1)
(或this
如果您從f1調用它)。
現在您已經參照了Form1
對象,您可以調用它的方法來處理該項目。
你可以簡單地在你的form2中創建一個公共變量'selectedItem'或者其他東西,然後點擊它來指定它 – 2013-02-27 12:25:42
'f2.showdialog();'應該是'f2.ShowDialog();' – 2013-02-27 12:25:43