如果 form1 單純跟 form2 互動,
可把 form1 的所有控制項全選,
修改 Modifiers 屬性為 public,
呼叫 form2 時把 form1 傳入,
就可直接存取 form1 所有的控制項。
form1:
Form2 frm2 = new Form2(this);
frm2.showDialog();
form2:
宣告 global 的 Form1 _Parent = new From1();
在 init 時,用 _Parent 去接。
之後像要設定 form1 的 textbox1,就是 _Parent.textbox1.text = "Test";
※ 引述《TameFoxx (foxx)》之銘言:
: ※ 引述《flyskycat (貓爪~抓抓抓)》之銘言:
: : 各位先進好
: : 我目前在 Windows Form 程式撰寫過程中遇到的問題及架構描述如下:
: : 架構
: : 1.程式具備兩個兩個視窗 Form1 主視窗及 Form2 輔助按鈕視窗。
: : 2.Form2 已寫程類別庫供 Form1 使用。
: : 3.當點擊 Form1 的 TextBox 後,會建立 Form2 實體並將視窗顯示出來供使用者點選按
: : 紐,未選到任何 TextBox 則 Form2 消失。點擊 Form1 其他 TextBox 則再次顯示
: : Form2。
: : 4.Form1 具備多個 TextBox,用來接收 Form2 按鈕所按下的值,當 Form2 按一下 "1",
: : 則 Form1 的 TextBox 就顯示 1;當 Form2 按下 "2",則 Form1 的 TextBox 就顯示
: : 12,依此類推。當 Form2 按下按鈕,Form1 的 TextBox 就更新其內容。
: : 問題
: : 1.因為我採用的是 Form1 的 TextBox 被 Click 之後,才將 Form2 視窗建立出來。所以
: : 我應該如何讓 Form2 知道 Form1 是哪一個 TextBox 被選擇到?
: : 2.因為每輸入一個值,Form1 的 TextBox 就需要馬上更新數值,所以我應該怎麼傳值比
: : 較好呢?
: : 因為測試了幾天還是寫不出來,希望各位先進能給我一些概念提示,我再自行找資料測試
: : 真的再寫不好,再將程式碼放上來請各位指導。
: 花點時間回文好了,希望原PO無論有無看懂都回應一下
: 幾個方法
: 1.
: Form1有幾個TextBox就寫幾個function
: 例 private void TextBox1Input(String input)
: {
: TextBox1.Text+=input;
: }
: private void TextBox1_Click(object sender, EventArgs e)
: {
: Form2 fm2 = new Form2()
: fm2.textinput+=TextBox1Input;
: }
: 然後在Form2上面宣告一個Action叫作textinput
: public Action<string> textinput
: 當Form2的按鍵按下後
: textinput.Invoke("text");
: 2.
: 第二種方法可能會比較適合原po 非常簡單
: 在Form2的建構子上加一個TextBox
: 然後Form1要建立Form2的時候將那個TextBox傳給Form2
: Form2就可以直接對那個TextBox作存取