C#中窗体的数据传递

用vs2008中进行窗体之间数据的传递


首先用form1体作为主窗体,当主窗体之间修改数据时,子窗体也可以和主窗体数据相同,使用构造函数进行数据传递

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;


namespace WindowsFormsApplication4

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }


        private void Form1_Load(object sender, EventArgs e)

        {


        }


        private void button1_Click(object sender, EventArgs e)

        {

            Form2 array = new Form2(this.textBox1, this.checkBox1);

            array.ShowDialog();


        }

    }

}



两个引用类型的数据:TextBox类型,和CheckBox;另外在Form2中增加了两个类数据成员,.NET中有两种类型,值类型和引用类型。值类型是从ValueType继承而来,而ValueType又是从Object继承;对于引用类型它直接继承Object类型。这下让我们看看怎样通过Form2来修改Form1里的数据。

    public partial class Form2 : Form

    {

        private TextBox txt;

        private CheckBox cht;

        public Form2(TextBox textBox, CheckBox checkbox)

        {

            InitializeComponent();

            this.textBox1.Text = textBox.Text;

            this.checkBox1.Checked= checkbox.Checked;

            txt = textBox;

            cht = checkbox;

         }


        private void button1_Click(object sender, EventArgs e)

        {

            txt.Text = textBox1.Text;

            cht.Checked = checkBox1.Checked;

            this.Close();

        }

定义txt 和 cht 变量,存储变量TextBox,CheckBox。然后通过txt,cht把子窗体的数据传输到主窗体,

因为它们所使用的同一个引用。


举一个例子

主窗体


  public partial class Form1 : Form

    {

        public ArrayList listdata1;

        public Form1()

        {

            InitializeComponent();

            this.listdata1 = new ArrayList();

            this.listdata1.Add("DotNet");

            this.listdata1.Add("PHP");

            this.listdata1.Add("XML");

            this.listdata1.Add("ASP");

            this.listdata1.Add(">NET");

            this.listdata1.Add("Dot");

            this.listBox1.DataSource = this.listdata1;


        }


        private void Form1_Load(object sender, EventArgs e)

        {


        }


        private void button1_Click(object sender, EventArgs e)

        {

            Form2 fchild = new Form2(this.listdata1);

            fchild.ShowDialog();

            this.listBox1.DataSource = null;

            this.listBox1.DataSource = this.listdata1;

        }

子窗体


public ArrayList listdata2;

        public Form2(ArrayList listdata)

        {

            InitializeComponent();

            this.listdata2 = listdata;

            foreach (object o in this.listdata2)

            {

                this.listBox1.Items.Add(o);

            }

      




        }


        private void Form2_Load(object sender, EventArgs e)

        {


        }


        private void button1_Click(object sender, EventArgs e)

        {

            if (textBox1.Text.Trim().Length > 0)

            {

                listdata2.Add(textBox1.Text.Trim());

                listBox1.Items.Add(textBox1.Text.Trim());

            }

            else

            {

                MessageBox.Show("请输入要添加的内容");

            }

        }


        private void button2_Click(object sender, EventArgs e)

        {

            int index = listBox1.SelectedIndex;

            if (index != -1)

            {

                listBox1.Items.RemoveAt(index);

                listdata2.RemoveAt(index);

            }

            else

            {

                MessageBox.Show("请选择内容");

            }

        }


        private void button3_Click(object sender, EventArgs e)

        {

            this.Close();

        }









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值