C#跨窗体传递数据

创建项目

在我们使用C#开发应用程序时,一般细化步骤包括创建项目、设计界面、设计属性、编写程序代码、保存项目、运行程序等6个步骤。

选择“Windows窗体应用程序”,输入项目名称,选择保存路径,单击“确定”按钮,即可创建一个Windows窗体应用程序,创建完成窗体应用程序。

设计界面

创建完项目后,在设计界面中会有一个默认的窗体,可以通过工具箱向其中添加各种控件来设计窗体界面。这个只需要用鼠标指针选中工具箱中要添加的控件,然后拖进设计窗体中就好了,像如下效果,下面Form1窗体中已经添加了两个label(标签)控件,两个button(按钮)控件,两个TextBox(文本框)控件。

设置属性

在窗体中选择指定控件,在“属性”窗口中对控件的相应属性进行设置,包括指定控件的名字、样式、大小、属性等。

编写代码

通过双击对应控件,进入代码编辑器,软件会自动触发button控件的click,就可以在该事件中编辑代码,例如下面这段:

Private void button_1_click(object sender,EventArgs e)

{

}

Private void button_1_click(object sender,EventArgs e)

{

}

如上操作就是基本的创建窗体操作,通过以上操作可以完整的创建一个Windows窗体应用。

前面我们认识了关于委托的用法,而在本次学习中,我们将会了解到,通过委托传递数据。例如,如果A窗体调用B窗体,在B窗体实例化的时候,将参数通过构造函数的方式穿进去,当A窗体执行某事触发主题时,A会先将数据传到服务端,接着服务器转发到B窗体。具体实现方法如下:

创建一个Windows窗体应用程序项目from1,然后添加另一个from2窗体。

在两个窗体中各添加一个文本框TextBox和按钮button。

单击from1中的button1,弹出from2,然后要在from1中的TextBox1和from2中传值。

将from1称作父窗体,将from2称作子窗体。

相对来说,将父窗体的值传到子窗体较为容易实现。

如下面例子

通过外部可访问的中间变量传参

在from1中

using System;

using System.Windows.*;

namespace WindowsFroms

{

    public partial class From1 : From

    {

        public From1()

        {

            InitializeComponent();

        }

        private void button1c(object sender, EventArgs e)

        {

            From2 from2 = new From2();

            from.num = textBox1.Text;

            from2.ShowDialog();

        }

    }

}

在from2中:

using System;

using System.Windows.*;

namespace WindowsFroms

{

    public partial class From2 : From

    {

        public From2()

        {

            InitializeComponent();

        }

               public string num;

        private void From2_Load(object sender, EventArgs e)

        {

            textBox2.Text = num;

        }

    }

}

子窗体传值给父窗体

在form1中:

using System;

using System.Windows.*;

namespace WindowsForms

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        private void button1c(object sender, EventArgs e)

        {

            Form2 form2 = new Form2();

            form2.ChangeText = (num) => textBox1.Text = num;

            form2.ShowDialog();

        }

    }

}

在form2中:

using System;

using System.Windows.*;

namespace WindowsForms

{

    public partial class Form2 : Form

    {

        public Form2()

        {

            InitializeComponent();

        }

        public Action<string> ChangeText;

        private void button2c(object sender, EventArgs e)

        {

            if (ChangeText != null)

            {

                ChangeText(textBox2.Text);

                this.Close();

            }

        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值