委托和事件入门(二)窗体间传值

C#窗体间常用的几种传值方式、以及委托与事件的详细介绍   窗体间的传值,最好使用委托方式传值,开始之前,我们先来说一下委托与事件的关系。   委托:是一个类。   事件:是委托类型的一个特殊实例,只能在类的内部触发执行。 首先创建2个窗体,这里我们以form1为发送窗体,form2为接收窗体 form1窗体 form2窗体 方式一(最简单的方式) form1窗体代码 using System; using Syst... 阅读详情
 
 
窗体间传值有多种方法,这里我们接着上一篇的委托和事件,使用委托和事件实现窗体间传值。
运行结果:点击主窗体Form1按钮后,弹出子窗体Form2,在Form2的TextBox中输入字符串后点击按钮后,在主窗体使用Label显示。
 
声明委托:
public delegate void SendEventHandler(string msg) ;
 
Form1.cs:
///<summary>
        ///打开子窗体
        ///</summary>
        ///<param name="sender"></param>
        ///<param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.sendMsgEvent += new SendEventHandler(LabelChanged);
            f2.Show();
        }
        ///<summary>
        ///接收来自子窗体的值,改变Label中的值
        ///</summary>
        ///<param name="msg"></param>
        public void LabelChanged(string msg)
        {
            this.label1.Text = msg;
        }
 
Form2.cs:
声明事件:
public event SendEventHandler sendMsgEvent = null;
 
        ///<summary>
        ///将值传到主窗体
        ///</summary>
        ///<param name="sender"></param>
        ///<param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            if (sendMsgEvent != null)
                sendMsgEvent(this.textBox1.Text);
            this.Close();
 }
点击button后,将Form2中的值传递到Form1中,执行sendMsgEvent事件,其本质就是调用Form1的LabelChanged方法,达到传值的目的。
 
 
子窗体和父窗体双向传值——C#窗体传值方法总结 简介  在很多场景下,我们的程序需要完成窗体间的传值功能,有时候是父窗体→子窗体单向传值、子窗体→父窗体传值甚至是,也有时候我们需要父窗体⇆子窗体双向传值。   在本文中主要介绍一些能够实现双向传值的方法,能够双向传值的方法也能够实现单向传值。   本文的所有源码都可以在GitHub上下载。      本文介绍的方法仅限于我自己知道并且实现过的,我相信还有很多我并不知道的方法,因此也许在很多 阅读详情

相关推荐

C# Winform 窗体传值 利用委托 子窗体传值给父窗体

利用委托进行窗体传值。     父窗体:Form1   子窗体:Form2   点击Form1,弹出Form2,点击按钮返回值给Form1 首先在Form2中定义委托和事件: //声明委托 和 事件 public delegate void TransfDelegate(String value); public partial class Form

u012454848的专栏 5307

浅谈c#中的委托和事件

大学扩招后,各类大学或学院如牛毛般兴起。随之而产生的现象是大学生源质量的下降,而优质大学老师也是僧多粥少,必然使大量水平尚不达标的教师混入各类院校,使上课的精彩程度有所降低。于是,逃课的学生们也越来越多... 作为众多大学生中一员的本文作者,也混迹在某所二流学校里。 某天上课铃响后,授课老师拿着《管理信息系统》一书讲课到一半,眼睛一描台下寥寥无几昏...

atongkui9780的博客 185

C# 利用委托实现窗体间传值

图文详解C#窗体间传递数据 ——窗口1若干TextBox中的数据,传递到窗口2中的ListView 功能描述:主窗体有一ListView控件和一“添加”Button控件。点击“添加”Button弹出一窗口,此窗口有若干TextBox,输入数据后,点击“确定”Button,数据回传到主窗体的ListView中。 核心知识:委托 实现步骤: 第一步:新建两个窗体,各自

jiliqiang1986的博客 6709

用委托进行窗体之间回传值

来自:http://blog.youkuaiyun.com/mypc2010/article/details/9229791 有这样两个窗体,一个是MainForm,一个是Form2.当我点击MainForm中的按钮,则窗体2显示出来。 然后当我在窗体2中的文本框中输入任意字符,MainForm中的文本框要跟窗体2中的文本框显示同样的内容。 这就涉及到了窗体之间的传值问题。

码农 1790

利用委托实现winform多个窗体间的传值

最近用C#做上位机程序开发,要实现这样一个功能: 父窗体创建了两个子窗体——子窗体1和子窗体2,子窗体1产生的数据要在子窗体2中显示出来。 因为这两个子窗体本身之间并没有直接关联,他们都是由父窗体new出来的,所以就想着1的数据先发给父窗体,父窗体再发给2。这样结构上比较清晰,也符合松耦合的模式。结构如下: 窗体间数据传递的方法有多种,这里我们直接选择最被推荐的方法:委托(delegate)和事件(event)。 子窗体1发送消息给父窗体 在子窗体1中定义一个委托 public delegate void

cslover的博客 1550

C# .NET框架中委托在窗体间传递值的实战指南

在.NET中,委托是一个引用类型,它定义了方法的类型,使得可以将方法作为参数传递给其他方法,也可以作为某个方法的返回类型。委托的声明类似于方法的签名,必须包括返回类型和参数列表。委托的声明语法如下:[访问修饰符] delegate 返回类型 委托名称(参数列表);实例化委托,通常需要提供与委托签名匹配的方法。可以使用方法组转换来简化实例化过程,或者使用Lambda表达式进行匿名方法的定义。示例代码:// 声明一个委托// 实例化委托并绑定方法。

weixin_35756373的博客 1128

C#利用委托和事件在窗体间传值问题

用静态变量和静态方法也可是现实在窗体间相互传值,但是有时候那些变量和方法未必能弄成静态的。 所以窗体间传递数值莫过于使用委托和事件了。 现有两个窗体form1,form2,它们都有分别有一个textbox和一个button,分别命名为:textbox1,button1和textbox21,button2。 当点击form1的button1时打开form2,form1不关闭。 然后在form

Thomas, be happy! 3475

【数据分享】1985-2023年30米CLCD土地覆盖栅格数据分享

总的来说,CLCD 反映了中国快速的城市化进程和一系列生态工程,揭示了气候变化条件下人为对 LC的影响,其在全球变化研究中具有潜在应用价值。最后,通过目视解译的独立样本和第三方测试样本评估CLCD的准确性。特别地,该研究将CLCD产品与目前最先进的30m专题产品包括不透水表面积(ISA)、地表水和森林进行比对,以综合评估CLCD的质量(以下为技术流程图)。数据分类:分为九类用地,该数据包括9种用地类型,分别为:农田、森林、灌木、草原、水域、冰雪、裸地、不透水面、湿地。数据格式:.tif格式。

weixin_61129400的博客 6924

C# 利用委托事件进行窗体间的传值

引言:   窗体间传值是每个学习WinForm新手的常见问题,最初级的方法就是 在窗体中先获取到要接受值窗体。然后通过.得到某个空间或者属性,直接赋值,这个需要接收放的窗体属性或者空间必须是public ,是极不安全的一种方式。在升级一下的新手做法就是在接受窗体中定义一个方法然后通过 调用这个方法来给某个控件或者属性赋值。这两种方法都是非安全的低级方式。非常不建议使用。本文我们讲讲如何通过委托事件(非单纯的委托)来解决窗体间信息传递的问题。 场景: 通过点击主主窗体Fro...

刘欢的博客 2773

射频接收机本振相噪指标计算:从倒易混频到GSM实战

在射频接收机设计中,相位噪声是衡量本振信号频谱纯度、影响系统灵敏度的关键指标。其核心影响机制源于倒易混频原理:当不纯净的本振信号与强带外阻塞信号混频时,本振的噪声边带会被转换到中频通带内,从而抬升接收机噪声基底。这一过程直接决定了接收机在阻塞测试等场景下的性能极限。从技术价值看,精确计算本振相噪要求,是进行系统噪声预算、实现成本与性能权衡的核心依据。尤其在手机、基站等对灵敏度要求极高的应用中,它指导着锁相环和压控振荡器的选型与设计。本文以经典的GSM DCS1800标准为例,通过详细的公式推导与变量分析,演

weixin_30368405的博客 327

Verilog--CDC跨时钟域处理(快时钟域到慢时钟域)

Verilog--CDC跨时钟域处理(快时钟域到慢时钟域)CDC问题单比特信号的跨时钟域问题从快时钟域到慢时钟域从慢时钟域到快时钟域多比特信号的跨时钟域问题异步FIFO握手协议 今天先写单比特信号从快时钟域到慢时钟域的方法,后续继续填坑 CDC问题 单比特信号的跨时钟域问题 从快时钟域到慢时钟域 设计思想   从慢时钟域到快时钟域通常使用打两拍的方法,这也适用于从快时钟域到慢时钟域时,但是如果当单比特信号持续时间小于快时钟域的一个周期时,需要用展宽信号再打两拍的方法。 设计相关代码 module Sync_

weixin_44425619的博客 9361

VB.NET学习笔记:再谈WinForm窗体间相互传值(单值、多值)——属性、委托和事件

在《VB.NET学习笔记:窗体显示及互相传值》一文中,通过默认的窗体实例、保持窗体引用的全局性或在窗体构造函数中把窗体指针作为参数传递,这些方法都是直接操作窗体中的任何控件来读取和改变窗体内的信息。这样会在窗体间大量互相引用各自的成员,造成了彼此之间存在着很大的耦合性,非常不利于窗体模块间的独立,破坏了类型封装性的原则。在.NET下,还为我们提供了另外一种强大的机制来实现窗体通信,这就是委托。 属...

zyjq52uys的博客 3588

红外:非均匀性校正01_基本原理与基本方法

非均匀校正(nonuniformity correction,NUC) 基本原理 这里要表达的意思就是:图中每一条直线对应一个像素点的,亮度/辐照度的情况。由于硬件的关系,每一个像素点的线性响应很不一样,所以需要通过矩阵来校正。 校正原理: 一点校正 两点校正 其他原理介绍: 参考链接: 基于多项式拟合的红外焦平面非均匀校正 课件:光电成像——非均匀性校正 红外图像非均匀性校正相关汇总 红外非均匀性校正算法总结 红外图像非均匀矫正——一点矫正 ...

dlvector的博客 2万+

委托、特性、反射、事件、事件跳转传值

AttributeTargets.Class 特性可以使用在类前AttributeTargets.Constructor 特性可以使用在构造函数前AttributeTargets.Field 特性可以使用在字段前AllowMultiple = true 特性是否能够多用特性名核心作用关键参数 / 说明条件编译,控制方法是否被执行参数为 “编译符号”(如Debug),仅定义该符号时方法调用才生效;VS 默认 “Debug” 配置含DEBUG符号,“Release” 不含。

2503_94462492的博客 823

LAMMPS后处理—如何构建二维云图-接触角呢?

计算接触角

Rockyoung 6523

ThingsBoard教程(十六):RPC部件的使用

前言 各位读者好,截止目前,ThingsBoard系列文章已经做了十篇,分别是 ThingsBoard教程(一):ThingBoard介绍及安装 ThingsBoard教程(二):租户,租户配置,部件组模块的使用 ThingsBoard教程(三):系统设置模块的使用 ThingsBoard教程(四):规则链简介与操作 ThingsBoard教程(五):客户,资产管理 ThingsBoard教程(六):设备管理 ThingsBoard教程(七):模拟设备遥测 ThingsBoard教程(八):自定义UI T

知无涯 4580

C#窗体间常用的几种传值方式及委托与事件详解

在 Form2 的构造函数中订阅了 Form1 中的 TitleChanged 事件,并定义了对应的事件处理函数 OnTitleChanged,在事件触发后设置 Form2 的标题为 Form1 的标题。在 Form1 中点击按钮后,将 textBox1 的文本赋给全局变量 SharedString 并创建并显示 Form2,在 Form2 的构造函数中将 Form1 中的全局变量 SharedString 赋给 textBox1。事件是由特定条件触发的动作,使用事件可以实现多个窗体之间的通信和协调。

wojiaolbl的博客 1161

复现CVE-2014-085(Apache ZooKeeper 未授权访问漏洞)

默认安装配置完的zookeeper允许未授权访问,管理员未配置访问控制列表(ACL)。导致攻击者可以在默认开放的2181端口下通过执行envi命令获得大量敏感信息(系统名称、java环境)导致任意用户可以在网络不受限的情况下进行未授权访问读取数据。

记录并分享学习安全的知识点.. 2176

c#中两个窗体相互传值

在做两个窗体相互传值的过程中,学习了好多类似的方法,最后找到了一篇很详细的博客,今天就结合这位大神的博客,http://blog.youkuaiyun.com/zlbcdn/article/details/70888603,加点自己的总结,保存备看。 1、功能展示 有时需要将子界面的内容传递到父界面,方法有好几种。经常用的是通过委托实现。具体的效果如下: 【说明】点击父界面上“...

HANHUABAO1122的博客 3885

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

WinForm中父窗体与子窗体之间的相互传值

在WinForm开发中,窗体之间的相互传值是一项基本操作,本文就来介绍一下实现方法。

HerryDong的博客 7861

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C# 窗体 winform 委托实例

C# winform委托实例1.委托相关总结2.委托程序流程3.1具体实例: Form1打开Form2,Form2改变Form1颜色3.2 Form1打开Form2,Form2传递值给Form1 1.委托相关总结 好处:1.可以避免在程序中大量使用If-Else(Switch)语句, 通过委托示列来实现 2.同时使得程序具有更好的可扩展性 什么时候用?委托自定义事件,回调,匿名委托,线程访问主线...

火山上的企鹅 6315

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

窗体间动态传值

本篇文章将了窗体间动态传值的三种方法,一、声明公有静态变量,二、更改From.designer.cs文件,三、利用委托。大家一起来学习吧

小小张自由—>张有博 3972
上一篇: 委托和事件入门(一)
下一篇: 委托和事件入门(三)自定义控件事件
spring21st
博客等级 码龄21年 450粉丝 407原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值