当前位置:编程学习 > C#/ASP.NET >>

前辈们请教个小问题。



目的:登陆成功后窗体3中的lable里的内容变成窗口1中textbox里面的内容-------





问题:我在form1中将textbox改成public的了,然后还加了一个public string str,然后在登陆成功后弹出新窗口的时候吧textbox里面的字符赋给str,然后当新窗体弹出后新窗体的先实例化
form1 fm1=new form1();
this.lable1.Text=fm1.textbox1.text;
this.lable2.Text=fm1.str;
运行后发现传过来的值都是空的什么都没有;
于是我就做了个猜想测试,新建了同样的两个窗体,在窗体1中放一个button 同时呢 我在里面也定义了一个public string str=“初始1”;
然后在button的单击事件下写了一个
str=“修改后”;

弹出窗体二后我同样用了lable来接这两个公共变量的值,发现接收到的是“开始1”。

是不是因为form1 fm1=new form1();实际上实例化的是一个窗体特殊类,而我们输入内容不是属于这个类只是在使用这个特殊类,所以实例化的时候只是实例化一个没有任何操作的最初始的那个form1呢。

我的意思是就像一辆a型大巴车,a型大巴1号 二号车=new a型大巴1号(); 不管原先那个对象a型大巴一号里面有多少乘客有多少人,我实例化新取名的这辆车所继承下来的只会是大巴型号,是一台和a型大巴一模一样的车而不会继承它里面做了多少人。

是不是这样理解呢? --------------------编程问答-------------------- 明明就是Form3,为什么要去改     form1中将textbox改成public的了??

可以在Form3里面使用属性,构建函数来接收Form1传递的参数。。 --------------------编程问答-------------------- 您没看完我说的意思、、、、、 --------------------编程问答-------------------- Form1 frm;
public Form3(Form1 _frm)
{
  frm = _frm; --------------------编程问答-------------------- 如你巴士例子所说
你new Form1得到的实例,只是一台新车,根本不是你之前运行的窗体 --------------------编程问答-------------------- 重载form3的构造函数,参数为(form1 f);
在form1中 form3 f=new form3(this);
这样才能把form1传递过去 --------------------编程问答-------------------- 楼主的意思是窗体间传值吧
可以使用构造函数
静态变量都可以的
在实例化form3的时候把值传递过去
Form3 form=new Form3("text1里面的值","text2里面的值");
在form3的构造函数创建2个属性
点击按钮执行

 Form3 form = new Form3(this.textBox1.Text,this.textBox2.Text);
            form.ShowDialog();
Form3窗体
 private string txt1;
        private string txt2;
        public Form3(string txt1,string txt2)
        {
            this.txt1 = txt1;
            this.txt2 = txt2;
            InitializeComponent();
        }

        private void Form3_Load(object sender, EventArgs e)
        {
            this.label1.Text = txt1;
            this.label2.Text = txt2;
        }
       
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,