作者wanderer1412 (.........)
看板C_Sharp
标题Re: [问题] 请教两表单即时传值问题
时间Mon Oct 26 23:15:58 2015
如果 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作存取
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.172.247.91
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1445872561.A.AD7.html
※ 编辑: wanderer1412 (1.172.247.91), 10/26/2015 23:18:36
1F:推 TameFoxx: 你宣告_Parent不用让他= new Form1(); 10/28 09:49
2F:→ TameFoxx: 你只是需要这个全域的参考而已 10/28 09:49
3F:→ TameFoxx: = new Form1(); 这段代表要建立一个Form1物件 10/28 09:50
4F:→ TameFoxx: 但事实上你根本不需要他 所以不必这麽作 10/28 09:50
5F:→ TameFoxx: 其次 这个方法虽然可行但就比较不适合原PO使用 10/28 09:50
6F:→ TameFoxx: 因为他要知道是哪个textbox被click 10/28 09:51
7F:→ wanderer1412: 感谢修正,这是凭以前的印象,的确不用 new ~ 10/28 11:46
8F:推 flyskycat: 感谢各位前辈指导,已完成此功能 10/30 17:15