黑马程序员技术交流社区

标题: 窗体间传值 [打印本页]

作者: 陈行    时间: 2013-10-13 11:22
标题: 窗体间传值
本帖最后由 陈行 于 2013-10-13 15:34 编辑

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            string str = textBox1.Text;
            Form2 f2 = new Form2();//创建另外一个窗体的对象
            f2.Str = str;//把要传的值存起来
            f2.ShowDialog();//显示窗体
        }
---------------------------------------------------------------
public partial class Form2 : Form
    {
        string str;
        public string Str
        {
            get { return str; }
            set { str = value; }
        }
        public Form2()
        {
            InitializeComponent();
        }
        private void Form2_Load(object sender, EventArgs e)
        {
            this.Text = str;//窗体2加载的时候  显示传过来的值    问题  this代表的是本类对象  但是对象是在窗体1创建的  并没有传过来对象  这个属性是怎么传过来的???
        }
    }

作者: 黑色海    时间: 2013-10-13 12:20
你把光标放上去,应该显示string str. 是在同一类中调用本类字段。
作者: liubeimeng    时间: 2013-10-13 13:20
你的属性是在你实例化的那个窗体中定义的,它只进行了你上边说的存值,然后把值赋给了str
作者: liubeimeng    时间: 2013-10-13 13:20
你的属性是在你实例化的那个窗体中定义的,它只进行了你上边说的存值,然后把值赋给了str
作者: liubeimeng    时间: 2013-10-13 13:21
你的属性是在你实例化的那个窗体中定义的,它只进行了你上边说的存值,然后把值赋给了str
作者: 夏闯富    时间: 2013-10-13 15:08
本帖最后由 夏闯富 于 2013-10-13 15:21 编辑

窗体1中创建窗体2的对象是为了调用窗体2下面的str属性,同时在窗体1中给窗体2下面的str属性赋值(这种效果等效于值从窗体1传到窗体2了)。并不是传对象。
             this.Text = str;//是表示把属性str的值显示在窗体2上,实际上,如果把this.Text换成一个控件lable1.Text(先拖一个Lable控件到Form2上)就更容易理解了。

窗体间传值的实质:  是两个类之间的调用,在一个类里面实例化 和调用另一个类的属性 并给其赋值。
作者: 陈行    时间: 2013-10-13 15:34
夏闯富 发表于 2013-10-13 15:08
窗体1中创建窗体2的对象是为了调用窗体2下面的str属性,同时在窗体1中给窗体2下面的str属性赋值(这种效果 ...

谢谢啊  明白了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2