Visual C#实现窗体间数据传递之二 (2)

Visual C#实现窗体间数据传递(2) 第一个功能的实现思路是把从窗体看成是主窗体的一个实例,加入到从窗体中的组件,可以看出是从窗体中定义的一个个变量,由于从窗体中加入的组件的组件缺省定义类型是Private(私有的),所以要想访问这些组件,必须改变为Public(共有的);这是因为,上文中修改了从命名空间System.Windows.Forms中的Form类派生而得到的Form2类的构造函数,由于构造函数中的参数和类型都是固定的,而主窗体向从窗体传递数据,就是通过构造函数中的参数来实现的,所以就造成了上面的那个缺点。 阅读详情
导读:   7.选择菜单【项目】|【添加Windows窗体】后,弹出【添加新项-VC#中不同窗体数据传递方法01】对话框。在此对话框中的【名称(N):】文本框中输入【Form2】后,单击【打开】按钮,则在VC#中不同窗体数据传递方法01项目中添加了一个新的窗体,名称为【Form2】。   8.把Visual Studio .Net的当前窗口切换到【Form2.cs(设计)】窗口,并从【工具箱】中的【Windows窗体】选项卡中拖入下列组件到【Form2.cs(设计)】窗体中,并执行相应操作:   · 二个TextBox组件,用以显示向主窗体请求获得的数据。   · 二个Label组件。   · 一个Button组件,名称为button1。   9.把Visual Studio .Net的当前窗口切换到【Form2.cs】窗口,即:Form2.cs的代码编辑窗口。并用下列代码替换替代系统产生的InitializeComponent过程。   { this.textBox1 = new System.Windows.Forms.TextBox ( ) ; this.textBox2 = new System.Windows.Forms.TextBox ( ) ; this.label2 = new System.Windows.Forms.Label ( ) ; this.label1 = new System.Windows.Forms.Label ( ) ; this.button1 = new System.Windows.Forms.Button ( ) ; this.label3 = new System.Windows.Forms.Label ( ) ; this.SuspendLayout ( ) ; this.textBox1.Location = new System.Drawing.Point ( 95 , 42 ) ; this.textBox1.Name = "textBox1" ; this.textBox1.Size = new System.Drawing.Size ( 125 , 21 ) ; this.textBox1.TabIndex = 2 ; this.textBox1.Text = ""; this.textBox2.Location = new System.Drawing.Point ( 94 , 80 ) ; this.textBox2.Name = "textBox2" ; this.textBox2.Size = new System.Drawing.Size ( 127 , 21 ) ; this.textBox2.TabIndex = 3 ; this.textBox2.Text = ""; this.label2.Location = new System.Drawing.Point ( 27 , 83 ) ; this.label2.Name = "label2" ; this.label2.TabIndex = 5 ; this.label2.Text = "提示信息:" ; this.label1.Location = new System.Drawing.Point ( 38 , 45 ) ; this.label1.Name = "label1" ; this.label1.TabIndex = 4 ; this.label1.Text = "欢迎词:" ; this.button1.Location = new System.Drawing.Point ( 80 , 136 ) ; this.button1.Name = "button1" ; this.button1.Size = new System.Drawing.Size ( 135 , 53 ) ; this.button1.TabIndex = 6 ; this.button1.Text = "从Form1中获取数据" ; this.button1.Click += new System.EventHandler ( this.button1_Click ) ; this.label3.Location = new System.Drawing.Point ( 102 , 210 ) ; this.label3.Name = "label3" ; this.label3.TabIndex = 7 ; this.AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14 ) ; this.ClientSize = new System.Drawing.Size ( 292 , 273 ) ; this.Controls.AddRange ( new System.Windows.Forms.Control[] { this.label3 , this.button1 , this.textBox2 , this.textBox1 , this.label2 , this.label1 } ) ; this.MaximizeBox = false ; this.MinimizeBox = false ; this.Name = "Form2" ; this.Text = "Form2" ; this.ResumeLayout ( false ) ; }   10.由于主窗体是把其中的跟踪条的数值通过从窗体中的label组件来显示的,所以必须把Form2.cs文件中创建label3组件时定义的"private"类型修改为"public"类型,修改后的创建label3组件的代码为:   public System.Windows.Forms.Label label3 ;   由于Form2类的实例是通过Form1类的实例来初始化,所以在创建label3组件后面添加下列代码,下列代码是创建一个Form1类的实例,其作用是初始化Form2类的实例(即从窗体):   private Form1 mF_Form ;   11.修改Form2类的构造函数,具体操作如下,用下列代码替换Form2.cs中缺省的构造函数:   public Form2 ( Form1 myForm ) { // // Windows 窗体设计器支持所必需的 // InitializeComponent ( ) ; this.mF_Form = myForm ; // // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 // }   12.在Form2.cs中的Main函数后,添加下列代码,下列代码的功能是实现向主窗体提出数据请求,并获取主窗体的数据,当然这些数据的类型必须修改为"public"类型。   private void button1_Click ( object sender , System.EventArgs e ) { textBox1.Text = this.mF_Form.textBox1.Text ; textBox2.Text = this.mF_Form.textBox2.Text ; }   13.至此,在上述步骤都成功完成,并全部保存后,Visual C#实现窗体间传递数据第二种情况的处理方法就全部完成了。此时单击快捷键【F5】就可以运行程序了,当调整Form1窗体的跟踪条数值,我们会发现Form2窗体中的label3组件显示的数值也随之变化;当在Form1窗体的二个TextBox组件中输入数据后,单击Form2窗体中的【从Form2中获取数据】按钮,则程序能够成功的从Form1中获取数据,并通过Form2中对应的TextBox组件显示出来。图01就是程序运行后的界面:         图01:【VC#中不同窗体数据传递方法02】程序的运行界面    小结   本节介绍的这种实现窗体间数据传送的方法要比第一篇介绍的方法要难许多,其难点就在于如何修改构造函数。对于那些要从其他窗体中要访问的数据,必须设定修改为"public",否则无法实现窗体间数据传递。   这二篇文章介绍的都是主窗体向从窗体传递数据,在下一篇文章中,将介绍从窗体向主窗体传递数据的实现方法。 本文转自 http://developer.ccidnet.com/art/322/20021224/34599_2.html
C#中实现窗体间的数据传递 第一个功能的实现思路是把从窗体看成是主窗体的一个实例,加入到从窗体中的组件,可以看出是从窗体中定义的一个个变量,由于从窗体中加入的组件的组件缺省定义类型是Private(私有的),所以要想访问这些组件,必须改变为Public(共有的);这是因为,上文中修改了从命名空间System.Windows.Forms中的Form类派生而得到的Form2类的构造函数,由于构造函数中的参数和类型都是固定的,而主窗体向从窗体传递数据,就是通过构造函数中的参数来实现的,所以就造成了上面的那个缺点。 阅读详情

相关推荐

《Visual C# 程序设计》课程学习(10)——第10章 Windows 窗体应用程序开发

10.1 Windows窗体编程基础 10.1.1 WinForms概述 #region Windows 窗体设计器生成的代码 /// <summary> /// 设计器支持所需的方法 - 不要 /// 使用代码编辑器修改此方法的内容。 /// </s...

qq_34573534的博客 4715

跨窗体传值系列之Winform

在初学者写窗体程序的时候,会常遇到窗体传值的问题困扰,比如说我实例化了需要用到的窗体,我就可以取到窗体当中的控件进行传值,这样是传值不过来的 接下来有两种方法给大家整理如下: 在这里我用vs创建了两个窗体,一个Form1,一个Form2。窗体Form1里面创建了一个文本框TextboBox和一个Button按钮, 窗体Form2里只创建了一个label用来接收从Form1文本框传过来的值,...

qq_37504026的博客 840

Visual_C#_实现窗体间数据传递

Microsoft Visual_C#_实现窗体间数据传递

番外篇(一)保存打开过的窗体

附加版 图片记录打开过的窗体 介绍:当打开过窗体,并且关闭时,窗体在关闭前的截图保存在DataTabel保存,在另一个窗体进行显示,点击图片打开对应的窗体。 第一步:界面层(UIL)代码,在窗体的Load事件中绑定下拉框的数据 (1)窗体Load事件,对 dtImage 变量 添加列,在当前窗体自定义公共方法,保存图片,和生成图片框 截图效果(打开窗体时):   #reg

gx_植绍明的博客 692

两个Form之间传值Demo

C#界面编程时实现不同窗体之间的值传递,比如子窗体和父窗体之间以及多个子窗体之间传值

C#不同界面之间传参数

C#不同界面之间传参数,是非常经典的代码,值得大家下载参考哈哈哈啊

VS2019导入其他项目的窗体文件(保留所有控件及各事件)

等待vs缓冲一下就会转变为windows窗体文件相关代码文件,且所有控件及各项事件均正常存在。点击后,会显示出复制过来的文件,显示呈透明块状,右键.cs文件,点击包括在项目中。vs2019中点击项目,展开后有个【显示所有文件】首先从源项目复制这三个文件至新项目正确的目录下。

liweizhe_qixu的博客 953

C# WinForm之间调用、窗口之间传递参数的例子

C# WinForm之间调用、窗口之间相互传递参数的例子

C#中保留历史值和窗体间传值。

1. 保留历史操作值的位置 2. 点击Settings.settings,编辑可以保存历史值的变量 3. 右击Settings.settings,选择View Code,可以编辑对象的属性类型,如下图在默认的属性中是没有Double[],所以需要在View Code后手动地去修改。   4. 点击Settings.Designers.cs 初始化设定的变量 5. 在F...

CLL的博客 899

C#两种方法实现在两个窗体之间传递参数

两种不同的方法实现在两个窗体之间传递参数,适用于C#普通窗体之间传递参数,

5G协议栈逆向工程:基于开源模拟器的核心网信令分析实战

本文详细介绍了基于开源模拟器Free5GC和UERANSIM的5G协议栈逆向工程实战,涵盖核心网信令分析、环境搭建、认证协议解析及安全漏洞验证。通过NGAP/NAS信令交互解密和异常流量注入测试,帮助研究人员深入理解5G网络安全机制,并提供实用的安全加固建议。

weixin_29250573的博客 676

C#两个窗体间的相互通信(转)

在编写C#windows应用程序的时候我们经常会遇到这种问题,怎么样在两个窗体间传递数据呢?例如,用C#做一个文本编辑器,里面有一个搜索功能(即搜索我打开的文本里面的文字),点搜索则弹出搜索对话框,输入要搜索的内容,然后确定,就可以搜索到我打开的文本里面的文字了,这里就用到了两个窗体间的相互通信。我查看了相关的资料想了想,得出一些想法和方法。 也许有的人会觉得这个很简单呀。假如主框架为...

weixin_34001430的博客 779

Redis Lua引擎UAF漏洞CVE-2025-49844深度剖析与复现实践

内存安全是软件系统稳定性的基石,其核心原理在于确保程序对内存的访问始终处于合法、受控的状态。在C/C++等手动管理内存的语言中,Use-After-Free(释放后使用)是一种典型的高危内存安全漏洞,它源于已释放的内存区域仍被程序指针引用,导致数据混乱或程序崩溃。这类漏洞的技术价值在于其往往能突破高级语言的安全边界,直接威胁进程本身,危害等级极高,常见于数据库、浏览器等核心基础设施。在Redis这样的高性能内存数据库中,其内置的Lua脚本引擎为复杂操作提供了强大支持,但同时也引入了沙箱环境下的复杂内存对象生

weixin_42530732的博客 365

Visual C#中实现窗体间的数据传递(1)

一个稍微复杂一点的程序一般都有二个或者更多的窗体。有时在程序设计中,数据不仅要在同一个窗体中传递,还要在窗体间传递, 这种传递是主窗体与从窗体之间数据的互相传递。从本文开始,我们将列举不同窗体间数据传递的四种情况,和用Visual C#实现这四种情况的具体方法。下面先介绍用Visual C#实现窗体间传递数据中第一种情况——从主窗体向从窗体传递字符串。在阅读完本文后,你还尝试一下 利用此方法在窗体

0ffs3t 1894

行车记录仪 - 碰撞检测

功能需求 行车记录仪的核心功能是记录,大部分时候,行车记录仪都是在循环录制视频和音频,而设备的存储空间是有限的,因此录制机制一般是循环覆盖录制,如此一些重要的记录(例如:发生碰撞时的记录)就可能会被覆盖,为了避免这种情况的发生,行车记录仪设备就需要感知这些情况并做特殊处理(例如:备份相应时刻的录像数据)。 实现原理 碰撞检测是通过物理芯片G-sensor来实现的,加速度发生变化时G-sensor驱动会将加速度上报给应用层,应用层做相应处理。 G-sensor G-sensor(Gravity se

qazw9600的专栏 5216

VC Spyglass CDC验证避坑指南:如何正确配置同步复位信号(实验二重点解析)

本文深入解析VC Spyglass CDC验证中同步复位信号的正确配置方法,通过实验二案例详细展示错误配置的典型表现及修正过程。文章提供同步复位的最佳实践方案,包括约束文件修改指南、验证流程优化建议和高级调试技巧,帮助工程师有效避免CDC验证中的常见陷阱。

rock5的博客 678

Visual C#中实现窗体间的数据传递

 Visual C#中实现窗体间的数据传递之一Visual C#中实现窗体间的数据传递之一 一个稍微复杂一点的程序一般都有二个或者更多的窗体。有时在程序设计中,数据不仅要在同一个窗体中传递,还要在窗体间传递,这种传递是主窗体与从窗体之间数据的互相传递。 从本文开始,我们将列举不同窗体间数据传递的四种情况,和用VisualC#实现这四种情况

小马的专栏 6476

泰凌微8258入门教程 基础篇①——Bluetooth® SIG Mesh 快速上手

Bluetooth® SIG Mesh Quick Start

6730

C#基于winform窗体和SQL Server数据库实现用户登录验证和值传递功能

首先我们打开Visual Studio2017(随便你什么版本,只要你支持Sql server数据库就行了),然后我们点击文件&gt;新建&gt;项目&gt;Visual C#中找到Windows窗体应用程序然后修改项目名称(你自己要做的显目的名字),点击确定就行了 然后你就会看到如下这个设计窗体: 设计一下窗体的控件变成如下这个效果: 设计完窗体效果,然后我们就可以写事件了 首先我们先写取消...

lyar1225的博客 8258

FLUENT Meshing Watertight Geometry工作流入门 - 9 生成体网格

总结一下我们学到的东西。讨论体积网格的重要性,并了解生成体积网格的不同方法。还了解体积网格质量的重要性,并学习如何改进它。

B_etter_Man的博客 1万+

药物对接仿真软件:HADDOCK_(16).实践项目:抗体-抗原对接案例

定义分子结构文件。

kkchenjj的博客 580

Visual C#中实现窗体间的数据传递之一

导读:   一个稍微复杂一点的程序一般都有二个或者更多的窗体。有时在程序设计中,数据不仅要在同一个窗体中传递,还要在窗体间传递,这种传递是主窗体与从窗体之间数据的互相传递。从本文开始,我们将列举不同窗体间数据传递的四种情况,和用Visual C#实现这四种情况的具体方法。下面先介绍用Visual C#实现窗体间传递数据中第一种情况——从主窗体向从窗体传递字符串。在阅读完本文后,你还尝试一

angleoldhen的专栏 1208

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: Visual C#实现窗体间数据传递之二 (1)
下一篇: Visual C#实现不同窗体间数据传递之三
angleoldhen
博客等级 码龄20年 40粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值