A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈行 高级黑马   /  2013-10-13 11:22  /  1617 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈行 于 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创建的  并没有传过来对象  这个属性是怎么传过来的???
        }
    }

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

6 个回复

倒序浏览
你把光标放上去,应该显示string str. 是在同一类中调用本类字段。
回复 使用道具 举报
你的属性是在你实例化的那个窗体中定义的,它只进行了你上边说的存值,然后把值赋给了str
回复 使用道具 举报
你的属性是在你实例化的那个窗体中定义的,它只进行了你上边说的存值,然后把值赋给了str
回复 使用道具 举报
你的属性是在你实例化的那个窗体中定义的,它只进行了你上边说的存值,然后把值赋给了str
回复 使用道具 举报
本帖最后由 夏闯富 于 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上)就更容易理解了。

窗体间传值的实质:  是两个类之间的调用,在一个类里面实例化 和调用另一个类的属性 并给其赋值。

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

回复 使用道具 举报
陈行 高级黑马 2013-10-13 15:34:33
7#
夏闯富 发表于 2013-10-13 15:08
窗体1中创建窗体2的对象是为了调用窗体2下面的str属性,同时在窗体1中给窗体2下面的str属性赋值(这种效果 ...

谢谢啊  明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马