关于C#窗体间的数据传值的方法好几种,在项目中都各有应用,虽然简单,这里记录下来,分享给大家!
一、使用带参数的构造函数
主窗体

private void button_Click(object sender, System.EventArgs e)
{
    // 将主窗体的控件值作为参数传递到子窗体
    Form2 formChild = new Form2(this.textBoxFrm1.Text,this.checkBoxFrm1.Checked);
    formChild.ShowDialog();
}

子窗体(Form2)


// 修改默认无参窗体构造函数,接受传递过来的值,且传递给子窗体控件。
Public Form2(string text,bool checkedValue)
{
    InitializeComponent();
    this.textBoxFrm2.Text = text;
    this.checkBoxFrm2.Checked = checkedValue;
}

但是这种传值存在不足,在子窗体里的数据修改后不能传给主窗体,也就是说主窗体不受子窗体的影响。而在实际的开发过程中我们经常使用子窗体来修改主窗体里面的数据。

二、   在.NET中有两种类型,值类型和引用类型。
值类型是从ValueType继承而来,而ValueType又是从Object继承;对于引用类型它直接继承Object类型。这下让我们看看怎样利用引用类型来通过Form2来修改Form1里的数据。

子窗体代码

Private TextBox textBoxFrm12;
private CheckBox checkBoxFrm12;
// 构造函数接受主窗体的控件引用,因为是引用类型,所以在内存在指向的是同一对象,因此修改这个对象的值也就修改了主窗体的值。
public Form2(TextBox heckbo,CheckBox heckbox)
{
    InitializeComponent();
    // 赋值
    this.textBoxFrm2.Text = heckbo.Text;
    this.checkBoxFrm2.Checked = heckbox.Checked;

// 定位引用
    this.textBoxFrm12 = heckbo;
    this.checkBoxFrm12 = heckbox;
}
// 关闭子窗体代码
private void buttonOK_Click(object sender, System.EventArgs e)
{
    // 给textbox和checkbox对象赋值。这里修改了同一块内存。
    this.textBoxFrm12.Text = this.textBoxFrm2.Text;
    this.checkBoxFrm12.Checked = this.checkBoxFrm2.Checked;
    this.Close();
}

这里也实现了传值的功能,但是总觉得不是很合理,总是让两个窗体控件传来传去,很烦,如果控件多了呢。当然我们可以将需要修改值的控件封装到自定义的结构体中,但是....我们再来看看下面一种传值方式吧。

三、C#窗体间通过ArrayList传值
主窗体代码


// 保存数据的ArrayList 
private ArrayList listData;
        public Form1()
        {
            InitializeComponent();
            // 初始化ArrayList 
            listData = new ArrayList();
            listData.Add(".Net");
            listData.Add("Java");
            listData.Add("XML");
            listData.Add("WebService");
            // 绑定数据
            listBox1.DataSource = listData;
        }
        // 打开子窗口
        private void buttonOpen_Click(object sender, EventArgs e)
        {
            // ArrayList 作为参数传递
            Form2 frm2 = new Form2(listData);
            frm2.ShowDialog();
            // 在子窗口修改ArrayList 后重新绑定数据
        listBox1.DataSource = null;
            // listBox1.Item.Clear();  提示"设置DataSource属性后无法修改项集合"错误。
            

转载于:https://www.cnblogs.com/haik/archive/2009/12/08/1619318.html

C#窗体间的数据传值(转)相关推荐

  1. C#中两个窗体间的数据传递

    winform 窗体编程 在两个窗体间传递数据可分为两种: 一:父窗体向子窗体传递. 二:子窗体向父窗体传递. 传递实现的机制: 分别在两个窗体中创建公有属性的设置字段,分别供两个窗口调用. 两种情况 ...

  2. 总结C#中窗体间传递数据的几种方法

    在编写C#windows应用程序的时候我们经常会遇到这种问题,怎么样在两个窗体间传递数据呢?以下是我整理的网上的各种方法,在遇到一个实际问题:在form1中打开一个form2窗口作为录入界面,将录入的 ...

  3. C#不同窗体间通信,数据传递

    在一个项目中,很多时候都需要在窗体间进行数据传递和通信,最觉见的是父子窗体之间的数据传递,比如登录ID,各个窗体都需要知道.有很多文章都写了这方面的问题,提出很多优秀的方法,鄙人不才,搜了一些资料之后 ...

  4. C#中窗体间传递数据的几种方法

    C#中窗体间传递数据的几种方法 在编写C#windows应用程序的时候我们经常会遇到这种问题,怎么样在两个窗体间传递数据呢?以下是我整理的网上的各种方法,在遇到一个实际问题:在form1中打开一个fo ...

  5. WinForm窗体间如何传值

    窗体间传递数据,无论是父窗体操作子窗体,还是子窗体操作符窗体,有以下几种方式: 公共静态变量: 使用共有属性: 使用委托与事件: 通过构造函数把主窗体传递到从窗体中: 一.通过静态变量 特点:传值是双 ...

  6. 【转】WinForm窗体间数据交互的方法

    在窗体间传递数据的方法比较多: 1.在子窗体中自定义一个构造函数,参数类型是主窗体,当要显示子窗体的时候,就用这个构造函数来实例化子窗体,然后把this指针传进去,说起来太抽象了,我大概一写大家应该就 ...

  7. Pyqt 窗体间传值

    窗体间传值网上有好多方法,比如新建文件,先将子类窗体的数据传到文件中,父窗体读取文件.  Signal&Slot机制进行传值 等等 在这里,我们就举个采用apply方法:Signal& ...

  8. 窗体间的跳转传值 1127

    窗体间的跳转传值 1127 需求情况 从窗口一获取数据 把数据传给窗体二 操作过程 在新窗体的类中定义一个公开的属性 当新窗体被实例化以后 该属性就可以被访问与存取值了 定义公开的属性 新窗体对象的属 ...

  9. 窗体间的跳转传值 1124

    窗体间的跳转传值 1124 目标 窗体一接收数据 窗体二显示,但是可以得到窗体一收到的数据

最新文章

  1. activiti任务TASK
  2. 每秒处理240万帧游戏画面,AI训练成本降低80%,谷歌开源RL并行计算框架
  3. python常用内置模块-Python基础-22常用内置模块
  4. 《Pro Ogre 3D Programming》 读书笔记 之 第七章 资源管理(转)
  5. 精度问题——直线方程的系数判断实际生产中三点能否确定一个圆
  6. 语言 班费管理系统源代码_固定资产管理系统开源的各种语言翻译
  7. logback 的拆分 Appender
  8. python代码测试 vim_用 Hypothesis 快速测试你的 Python 代码
  9. 爱奇艺纪录片《棒!少年》《从长安到罗马》入选广电总局“2020年优秀国产纪录片集锦”...
  10. section和div有什么区别?
  11. 华为机试题2[编程题] 汽水瓶
  12. 太赞了,竟然用SpringBoot打造一款网页版的IM,进行聊天...
  13. idea导入本地idea的web项目(服务器用的是tomcat)
  14. python pos函数_从0入门Python — 4. 函数
  15. python颜色名称_中文颜色名称与RGB颜色对照表
  16. SSM 校园外卖系统的设计与实现
  17. Scrapy第三(②)篇:创建scrapy项目
  18. 人类一败涂地做图教程_人类一败涂地-怎么制作地图-地图制作教程详细入门级...
  19. 计算机运算器由什么组成部分,什么是运算器_运算器由什么组成
  20. Markdown语法-从基础到进阶

热门文章

  1. CacheManager操作缓存
  2. python 类与类之间的关系
  3. UVa 1605 - Building for UN
  4. 大数据如何影响百姓生活
  5. Flash--元件和实例
  6. iOS:Core Data 中的简单ORM
  7. 实现类的多态性,方法的重写和重载
  8. python设计小游戏谁先走到17_蜗牛绕墙爬(python小游戏源码)
  9. SpringBoot+Vue 完整的外卖系统,手机端和后台管理
  10. 文字旋转_技术宅大白教你用软件做抖音爆火的文字旋转视频