我的問題是: 主窗體首先打開,有一個按鈕打開子窗體。我使用的構造,我想從孩子形式的字符串返回主窗體的文本框,現在我的代碼是:如何從子窗體返回一個字符串到主窗體(不打開任何新窗體)?
Form1 f = new Form1(txt1.Text);
f.Show();
但是,一個新的主要形式將打開,該字符串不會在填第一主要形式。 那麼如何使用只有一個主要的形式?
我的問題是: 主窗體首先打開,有一個按鈕打開子窗體。我使用的構造,我想從孩子形式的字符串返回主窗體的文本框,現在我的代碼是:如何從子窗體返回一個字符串到主窗體(不打開任何新窗體)?
Form1 f = new Form1(txt1.Text);
f.Show();
但是,一個新的主要形式將打開,該字符串不會在填第一主要形式。 那麼如何使用只有一個主要的形式?
你可以做到這一點,通過OpenForms得到它:
Form1 frm = Application.OpenForms.OfType<Form1>().FirstOrDefault();
請務必在其修改財產申報你的控制TXT1爲公有的,因此你可以從孩子的形式訪問:
Form1 frm = Application.OpenForms.OfType<Form1>().FirstOrDefault();
frm.txt1.Text = "Change";
frm.Show();
現在如果你想通過它的構造函數改變它,我懷疑你可以做它,因爲它已經被初始化了,除非你調用另一個新的Form1來初始化它,並且會再次通過它的構造函數。
你可以做的是直接改變其屬性:
Form1 frm = Application.OpenForms.OfType<Form1>().FirstOrDefault();
frm.stringMain = "Foo"; //Your property you want to change
frm.txt1.Text = "Change";
frm.Show();
還是不明白你的代碼。我已經將Form1中的標籤的屬性從私有公共設置爲公共,所以現在我可以擁有這個: **'frm.mylabel.Text = MyString; '** – Nlive
是的。你遇到什麼錯誤? @Nlive –
你真的想通過構造函數傳遞值嗎?那麼你不能在Form1上訪問它,因爲它已經打開了,除非你想打開一個新的Form1?讓我知道,以便我可以編輯我的代碼。 @Nlive –
你的問題不是很清楚,我不知道你想做什麼。單擊按鈕時應該發生什麼,以及該字符串何時應該填充在主窗體上? – smead
對不起,我仍然困惑。你說你想要2種形式,但是你不想打開一個表格?這些似乎是相反的事情。對不起,但我不明白你在問什麼。 – smead
由於Form1已經打開,我想從Form2直接添加一個字符串到該Form1,而不是打開一個新窗體並將字符串添加到它 – Nlive