c# 一个蛮怪的问题,高分求9

来源:百度知道 编辑:UC知道 时间:2024/05/22 20:26:32
是这样子的:
我在FORM_1窗口上设计了一个button1按钮,在BUTTON1里面写入
Form FORM_2=new Form();
form_2.show();
大家都知道,运行时如果我按了button1就会打开FORM_2窗口!
我的问题是,如果我在FORM_2的TEXTBOX里写入一行字,怎么把它显示在FORM_1的TEXTBOX上面?(假设我在FORM_1和FORM_2上都添加了TEXTBOX控件!)
我曾经试过在FORM_2中新实例化一个FORM_1对象 FORM_1 fm_1=new FORM_1
然后再用fm_1.Textbox.Text=this.Textbox.Text;
可是原来的FORM1窗口上仍旧没有显示FORM_2输入的字!

在你的 Form 类里面 增加一个 属性:
public string FormText{get {return TextBox.Text;} set{TextBox.Text =value;}}
再增加一个 属性:
public Form refForm;

好了,
在你的 BUTTON1 事件 里面 时的代码加一行后,如下:
Form FORM_2=new Form();
form_2.refForm = this;
form_2.show();

然后 在你 需要给 form1 的 textbox 需要赋值的地方,
写如入语句:

if(refForm!= null) refForm.FormText = TextBox.Text;

思路这样子的,
需要处理 的细节 还有不少。

你必须清楚new是干嘛用的~~是在内存地址中新扩充一部分空间存放你new下来的对象,也就是说,new和之前你打开的窗体完全是两码事~~要想实现这一功能的话,就必须用静态方法!!

两种方法:
①用静态方法
②跳转给窗体传参,就是引用传递,如果理解不了你就当窗体是一个对象,然后给它在再加一个带参的构造函数,这样就可以了
注:如果值传递引用传递分不清就用第一种吧,单写一个类,然后在调用就O了。

这个好办
fm_1.Textbox.Text=this.Textbox.Text; 这个我先说下
你这个作用是在另一个窗体内的新的一个FORM1实例的Textbox,和原先的主窗体无关
你重写FORM_2的构造方法
带入一个参数为control类型的
然后用一个对象来接收这个参数(就直接传递了引用了)
你写好FORM_2的Textbox的changed事件,时刻给引用的对象的相关属性赋值
大概就是这样了
你自己多尝试了

有个相对简单的办法,把form1设置为全局变量,然后就可以从form2里访问form1的东西啦。
打开Program.cs,看到那行 A