新建winform窗体Form1和Form2; 接下来要通过点击Form2的按钮,实现Form1界面的同步刷新. 先展示一下最终效果: 1.Form1界面如下: 2.点击按钮弹出Form2,界面如下: 3.点击Form2按钮弹出提示框,点击“是”实现Form1的同步刷新: 4.Form1窗体刷新,label文本变更: 最终展示效果大致是这样,很简单,原理也很清晰,下面我们来看一下具体的实现代码: 1.首先在Form2窗体中声明一个委托事件,并在Form2点击按钮事件中调用委托事件. using…
说起winform程序中窗体之间的参数互传,大家找度娘会找到很多方法: 1.在窗体类中创建全局变量,类型为公开.静态的: 2.在窗体类中定义狗仔函数: 3.通过实践来船体参数: 这三种思路完全来自于霖小屋的c# winform窗体之间传递参数问题总结,大家可以看看他的这篇博客学习学习. 下面我要给大家说的一种方法相对来说有点繁琐,但对于winform程序初学者来说绝对的受用.之前在度娘上寻找winform窗体的显示与隐藏受到点启发,本来winform程序创建新的窗体的时候是不带参数的,为了能够在…
[摘自:http://www.cnblogs.com/codeToUp/p/5371062.html] 工程的源代码地址:https://github.com/yes-or-no/WinFormTransValueDemoByDelOrEvent.git C#winform窗体间传值,三种方法示例,注释详细.使用方法:使用vs2013打开编译运行即可: 工程中总共介绍了三种方法:###方法1:通过保存对象的引用调用其方法实现对子窗体的控制:###方法2:通过委托,在子窗体显示之前,为委托赋值,关…
观察者模式的应用:Winform窗体传值 观察者模式的概念: 定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并更新. 今天我们就学着用一下这个观察者模式,先想象下这个场景:当一个窗体(主窗体)内的值发生变化时,另外几个窗体内的值也会发生相应的变化.这个最简单的实现方式是,在子窗体类内创建一个公共方法,在主窗体内创建子窗体的实例.当值发生变化时调用子窗体的公共方法.还有一种简单方法是用静态属性,相当于全局变量,这个只能针对小型应用.第一种有一个缺点,当增加子…
-----------------------------------------------------------‘接收窗体’代码.cs------------------------------------------------------------ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; u…
当程序需要将一个窗体中的一些信息传给另一个窗体并让其使用时,就需要用到这个知识点 方法一:通过接受参数的窗体的构造函数传值 例:现有Form1和Form2两个窗体,二者都包含一个文本框,Form1还包含一个按钮.程序从Form1开始运行,当点击Form1上的按钮时,Form2弹出,并将Form1中文本框中的内容显示在Form2上的文本框中.实现将Form1上的值传给Form2. Form1上的代码: public partial class Form1 : Form { public Form1…
public FrmScan() { InitializeComponent(); Form1 frm = new Form1(); frm.Dock = DockStyle.Fill; frm.FormBorderStyle = FormBorderStyle.None; frm.TopLevel = false; this.Controls.Clear(); this.Controls.Add(frm); frm.Show(); }…
public FrmScan() { InitializeComponent(); Form1 frm = new Form1(); frm.Dock = DockStyle.Fill; frm.FormBorderStyle = FormBorderStyle.None; frm.TopLevel = false; this.Controls.Clear(); this.Controls.Add(frm); frm.Show(); }…
1.委托概述 委托是一种数据类型,像类一样(可以声明委托类型变量).方法参数可以是int.string.类类型 void M1(int n){  } √ void M2(string s){  } √ void M3(Person p){  } √ 委托就是一种数据类型,用来存放方法的数据类型. 那么委托到底把方法存到哪里了?其实委托还是一个类.把方法包装成了一个委托. 方法是不能直接赋值的,那么能不能声明一个能存放方法的变量呢(委托).像存储变量一样把方法存储起来. 2.委托的使用 声明委托的…
委托 定义一个委托,声明一个委托变量,然后让变量去做方法应该做的事. 委托是一个类型 事件是委托变量实现的 经典例子:两个winform窗体传值 定义两个窗体:form1和form2 form1上有一个文本框,一个按钮 点击计算按钮调出form2 点击form2窗体按钮返回结果20赋值给form1窗体文本框 form1代码如下: //计算按钮事件 private void Button1_Click(object sender, EventArgs e) { Form2 f2 = new For…
窗体间传值 今天得空,刚好看到网上好多人再找winform窗体间传值的问题,由于昨天项目的优化的感觉不错,就写了个C# winform窗体间传值的demo,希望能给需要的人的带来帮助: 工程的源代码地址:https://github.com/yes-or-no/WinFormTransValueDemoByDelOrEvent.git C#winform窗体间传值,三种方法示例,注释详细.使用方法:使用vs2013打开编译运行即可: 工程中总共介绍了三种方法:###方法1:通过保存对象的引用调用…
点击打开按扭,打开传输值窗体 public partial class Form1 : Form { public Form1() { InitializeComponent(); } public void getValue(string strV) { this.textBox1.Text = strV; } private void button1_Click(object sender, EventArgs e) { Form2 frm = new Form2(); //frm.fath…
常用的Winform窗体传值有两种方式. 1.更改Form.designer.cs文件,将控件的设为Public,供子窗体访问. 在designer.cs文件的最后,找到你的控件声明. private System.Windows.Forms.TextBox textBox1; 更改Private为public,保存即可. 2.利用委托进行窗体传值. 父窗体:Form1 子窗体:Form2 点击Form1,弹出Form2,点击按钮返回值给Form1 首先在Form2中定义委托和事件: //声明委…
引言: 窗体间传值是每个学习WinForm新手的常见问题,最初级的方法就是 在窗体中先获取到要接受值窗体.然后通过.得到某个空间或者属性,直接赋值,这个需要接收放的窗体属性或者空间必须是public ,是极不安全的一种方式.在升级一下的新手做法就是在接受窗体中定义一个方法然后通过 调用这个方法来给某个控件或者属性赋值.这两种方法都是非安全的低级方式.非常不建议使用.本文我们讲讲如何通过委托事件(非单纯的委托)来解决窗体间信息传递的问题. 场景: 通过点击主主窗体From_Main的发送按钮,所有…
C#中WinForm窗体事件的执行次序如下: 当 Windows Form 应用程序启动时,会以下列顺序引发主要表单的启动事件:        System.Windows.Forms.Control.HandleCreated        System.Windows.Forms.Control.BindingContextChanged        System.Windows.Forms.Form.Load        System.Windows.Forms.Control.Vis…
Observer设计模式:监视者模式.在类中的方法中处理的结果或者消息通过事件委托 的方式发送给主窗体. 因为在其它类中直接访问主窗体类,显示内容是不能直接调用控件赋值的,当然也有别的类似查阅控件名,直接赋值的方式, 这种方式似乎不是被提倡的.而观察者模式是常用的方式. 初学者在刚开始写程序时,往往把很多的方法函数都写在了主窗体类下,很方便的调用主窗体里边的控件,给予赋值, 但代码多了肯定会乱.所以要进阶必须熟悉当前讲的方式. 下边是个简洁的带参数的事件委托的写的代码 using System;…
原文:WPF 委托 事件 B窗体调用A窗体方法 具体实现 A窗体 中加载B窗体  B窗体触发A窗体里的方法 当点击B窗体确定Button事件   给A窗体俩个TextBox赋值 并关闭B窗体 B窗体 1)定义参数类 2)定义委托 定义委托事件 3) 定义触发事件方法 4) 触发事件方法 A窗体 1)实例化B窗体对象 2)注册定义的事件 3) 实现事件 代码 B窗体 1)定义参数类 也就是 我传过去了俩个字段(这俩个字段 让我封装成的类) //对象 public class ItemEventAr…
定义委托 public delegate void SendMessageToChildForms(string s); //定义了一个参数是string ,无返回值的委托,名为 SendMessageToChildForms. 委托实例化 // 本质就是实例化了一个事件event public event SendMessageToChildForms smtcf_event; 定义具体执行的方法 public void ToShowGetMessage(string s) { this.lb…
1.窗体布局如下,一个label标签内容如下,一个btnSave按钮,用于保存,其他九个按钮用于选择楼盘. 2. 按钮存于Control容器中,编写方法遍历容器中的button,通过条件过滤掉不是button的对象以及一个保存按钮,筛选条件就是btnSave中tag所存的“btnSave”值,通过它作为判断条件,过滤掉btnSave按钮.并且在foreach中为他们添加统一的委托. 3.添加一个House对象,在house对象中,声明了三个属性,两个构造方法.属性分别为总价,楼盘名称,每平米均价…
先放置一个容器控件,并设计 好WinForm(或WPF)窗口 winform 调用 wpf ElementHost el = new ElementHost(); el.Dock = DockStyle.Fill; this.panelStation.Controls.Add(el); ucStationMess_WPF stat = new ucStationMess_WPF(); el.Child = stat; 其中,panelStation 为winform 的窗口控件 ucStatio…
Form 和Control 类公开了一组与应用程序启动和关闭相关联的事件.当Windows 窗体应用程序启动时,主窗体的启动事件按以下顺序引发: System.Windows.Forms.Control.HandleCreated  在为控件创建句柄时发生. System.Windows.Forms.Control.BindingContextChanged  当 BindingContext 属性的值更改时发生. System.Windows.Forms.Form.Load   在第一次显示窗…
前台:在winform窗体Form1放入pictureBox1 后台代码: namespace 点击小图变成大图 { public delegate void ClickDelegateHander(string Url); public partial class Form1 : Form { public event ClickDelegateHander ClickEvent; public Form1() { InitializeComponent(); } private void p…
1.打开多个窗体 2.窗体之间的传值 3打开唯一窗体…
编写WinowsForm应用程序时,实现两个窗体之间相互传递值的方法其实很简单.以下用一个例子说明:在名为FormMain主窗体运行过程中利用名为FormInfo窗体,获取用户输入信息,并将这些信息返回给FormMain 1. FormMain和FormInfo 点击“修改...”按钮,显示FormInfo 2. 设置FormInfo中buttonOK和buttonCancal的属性 3. FormMain代码 public partial class FormMain : Form { pub…
摘要http://www.jb51.net/article/63837.htm 这篇文章主要介绍了C# Winform窗口之间传值的多种方法浅析,本文起讲解了通过构造器传值.通过属性传递.通过事件携带参数传递等方法,需要的朋友可以参考下 一般的工程都是多个form组成的,各个窗体之间经常要灵活的传递数据.下面分享一点自己的经验: 窗体传值的方法有很多,下面仅介绍我用过的一些,不知道官方叫这些什么方法,大家也可以找找看其他的. 通过构造器传值 这是最简单的一种方式,例如我从form1中要传一个字符…
http://www.cnblogs.com/xinjian/archive/2011/09/15/2177851.html 本人刚刚接触Winform ,学习之后分享下心得. winform 窗体与窗体之间参数的传递常规的有两种 1.构造函数传参.即重载第二个窗体的构造函数,把需要传的参数写入第二个窗体的构造函数.代码如下: Form1: private void button1_Click(object sender, EventArgs e) { string txt = this.tex…
1.委托的定义:声明委托类型(返回值和参数,命名空间中):定义委托对象 (把委托想象成函数中的占位符~因为你并不确定调用哪个函数~) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace @delegate { public delegate void DelSayHi(string name); c…
3步骤: 1.在需要自适应的Form中实例化全局变量   AutoSizeFormClass.cs源码在下方 AutoSizeFormClass asc = new AutoSizeFormClass(); 2.Form_Load事件中   asc.controllInitializeSize(this); 3.Page_SizeChanged事件中 asc.controlAutoSize(this); AutoSizeFormClass.cs源码如下: class AutoSizeFormCl…
Winform窗体实现服务端和客户端通信的例子,是参考这个地址 http://www.cnblogs.com/longwu/archive/2011/08/25/2153636.html 进行了一些异常处理,提示信息的补充,还有新增获取本地IP的方法 1.通信原理 1)服务端与客户端 启动服务端后,服务端通过持续监听客户端发来的请求,一旦监听到客户端传来的信息(请求),两端便可以互发信息了. 服务端需要绑定一个IP,用于客户端在网络中寻找并建立连接(支持局域网内部客户端与服务端之间的互相通信)…
一.说明 2012-11-30 曾经写过 <C# WinForm窗体及其控件自适应各种屏幕分辨率>  ,其中也讲解了控件自适应的原理.近期有网友说,装在panel里面的控件,没有效果? 这是控件嵌套的问题,加入即可实现.使用皮肤时,要注意在窗体Load事件中,有些控件(比如DataGridView)的子控件还没有完成,在这里记录控件的个数比较少,而在窗体SizeChanged事件中获取的比较多(是正常的). 解决的方法是,记录控件的初始位置和大小以及处理控件的缩放,都放到窗体SizeChang…