1.子窗体事件刷新父窗体界面值

子窗体定义委托和事件

 //声明一个委托
public delegate void DisplayUpdateDelegate(string str);
//声明事件
public event DisplayUpdateDelegate ShowUpdate;
private void Form2_Load(object sender, EventArgs e)
{ } private void button1_Click(object sender, EventArgs e)
{
if (ShowUpdate != null)
{
ShowUpdate(textBox1.Text.ToString());
}
}

父窗体

   private void button3_Click(object sender, EventArgs e)
{
Form2 _frm2 = new Form2();
_frm2.ShowUpdate += new Form2.DisplayUpdateDelegate(ShowMessage);
_frm2.Show();
} private void ShowMessage(string str)
{
textBox1.Text = str;
}

2.父窗体的事件刷新子窗体的值

父窗体代码

  public delegate void ChangeSonWindowDelegate(string str);
ChangeSonWindowDelegate _changeSonWindow;
private void button1_Click(object sender, EventArgs e)
{ Form2 _frm2 = new Form2();
_changeSonWindow = new ChangeSonWindowDelegate(_frm2.ShowMessage);
_frm2.Show(); } private void button2_Click(object sender, EventArgs e)
{ _changeSonWindow(textBox1.Text); }

子窗体代码

        public void ShowMessage(string str)
{
textBox1.Text = str; }

3.父窗体调用子窗体的方法。子窗体一定得是显示状态。

父窗体

        Form2 _frm;
private void button1_Click(object sender, EventArgs e)
{
timer1.Interval = ;
timer1.Enabled = true;
_frm = new Form2();
_frm.ShowDialog(); } private void timer1_Tick(object sender, EventArgs e)
{ _frm.WriteLog("调用子窗体方法2222");
}

子窗体

        public void WriteLog(string str)
{
Console.WriteLine(str);
}

4.子窗体值->父窗体

父窗体

  private void button1_Click(object sender, EventArgs e)
{
Form2 myFrm = new Form2();
if(myFrm.ShowDialog()==DialogResult.OK)
{
string boyName = myFrm.BoyName;
int age = myFrm.Age;
}
}

子窗体

 private string _boyName;
private int _age; public string BoyName { get => _boyName; set => _boyName = value; }
public int Age { get => _age; set => _age = value; } private void button1_Click(object sender, EventArgs e)
{
BoyName = "jim";
Age = ;
this.DialogResult = DialogResult.OK;
}

5.跳出子窗体,在子窗体上实时显示信息

父窗体

ShowRunning(true);
   ShowRunningMsg("正在扫描中,请耐心等待......");

关闭子窗体 ShowRunning(false);

private delegate void ShowRunningDelegate(bool isShow);

        private void ShowRunning(bool isShow)
{
ShowRunningDelegate _showRunning = new ShowRunningDelegate(ShowRunningMethod);
this.Invoke(_showRunning, new object[] { isShow}); } FrmRunning _FrmRunning;
public delegate void ShowRunningMsgDelegate(string msg);
ShowRunningMsgDelegate ShowRunningMsg;
private void ShowRunningMethod(bool isShow)
{
if (isShow)
{ _FrmRunning = new FrmRunning();
ShowRunningMsg = new ShowRunningMsgDelegate(_FrmRunning.ShowRuningMsg); _FrmRunning.Show();
}
else
{
if (_FrmRunning != null)
{
_FrmRunning.Close();
}
} }

子窗体

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 BlueToothATE
{
public partial class FrmRunning : Form
{
public FrmRunning()
{
InitializeComponent(); } private void FrmRunning_Load(object sender, EventArgs e)
{ } public void ShowRuningMsg(string msg)
{
lblMsg.Text = msg;
} }
}

c# 不同窗体之间传值和调用的更多相关文章

  1. windows form (窗体) 之间传值小结

    windows form (窗体) 之间传值小结   windows form (窗体) 之间传值小结 在windows form之间传值,我总结了有四个方法:全局变量.属性.窗体构造函数和deleg ...

  2. c# 日常记录,(获取系统时间、return),一些文件隐藏无法引用,c#多个窗体之间传值

    1.获取系统时间 DateTime.Now.ToString(); DateTime dt =DateTime.Now; dt.AddDays(1); //增加一天 dt.AddDays(-1);// ...

  3. winform窗体 小程序【打开多个窗体、窗体之间传值、打开唯一窗体】

    1.打开多个窗体 2.窗体之间的传值 3打开唯一窗体

  4. C#使用事件方式Winform窗体之间传值

    [摘自:http://www.cnblogs.com/codeToUp/p/5371062.html] 工程的源代码地址:https://github.com/yes-or-no/WinFormTra ...

  5. 多窗体及窗体之间传值 以及listview的使用

    三中打开窗口窗体状态: 1   messagebox.show 类型  特点: 从窗口form 1里打开另一个窗体form2,form2不关闭的情况下form1 不能操作:代码如下: private ...

  6. 观察者模式的应用:Winform窗体之间传值

    观察者模式的应用:Winform窗体传值 观察者模式的概念: 定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并更新. 今天我们就学着用一下这个观察者模式,先想象 ...

  7. WinForm窗体之间传值

    当程序需要将一个窗体中的一些信息传给另一个窗体并让其使用时,就需要用到这个知识点 方法一:通过接受参数的窗体的构造函数传值 例:现有Form1和Form2两个窗体,二者都包含一个文本框,Form1还包 ...

  8. WinForm 与WPF 窗体之间的想到调用

    先放置一个容器控件,并设计 好WinForm(或WPF)窗口 winform 调用 wpf ElementHost el = new ElementHost(); el.Dock = DockStyl ...

  9. winform两个窗体之间传值(C#委托事件实现)

    委托 定义一个委托,声明一个委托变量,然后让变量去做方法应该做的事. 委托是一个类型 事件是委托变量实现的 经典例子:两个winform窗体传值 定义两个窗体:form1和form2 form1上有一 ...

随机推荐

  1. 百度数据可视化图表套件echart实战

    最近我一直在做数据可视化的前端工作,我用的最多的绘图工具是d3.d3有点像photoshop,功能很强大,例子也很多,但是学习成本也不低,做项目是需要较大人力投入的.3月底由在亚马逊工作的同学介绍下使 ...

  2. jquery修改带!important的css样式

    由于需求的需要,今天在用jquery修改一个弹出框的样式的时候,由于有一个按钮有padding-left:12px;导致内间距空出来的这一块颜色用普通的方式无法改变. 普通的jquery修改css的方 ...

  3. 我也来写:数据库访问类DBHelper

    一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...

  4. C#进阶系列——MEF实现设计上的“松耦合”(二)

    前言:前篇 C#进阶系列——MEF实现设计上的“松耦合”(一) 介绍了下MEF的基础用法,让我们对MEF有了一个抽象的认识.当然MEF的用法可能不限于此,比如MEF的目录服务.目录筛选.重组部件等高级 ...

  5. Android开发自学笔记(Android Studio)—4.2TextView及其子类

    一.引言 TextView是我们最常用的一个控件了,它类似于C# Winform程序中的Lable,Java Swing编程中的JLable,不过相对功能更强大些,但从功能上看,它其实就是个文字编辑器 ...

  6. 覆盖问题:最大覆盖问题(Maximum Covering Location Problem,MCLP)和集覆盖问题(Location Set Covering Problem,LSCP)

    集覆盖问题研究满足覆盖所有需求点顾客的前提下,服务站总的建站个数或建 设费用最小的问题.集覆盖问题最早是由 Roth和 Toregas等提出的,用于解决消防中心和救护车等的应急服务设施的选址问题,他们 ...

  7. 彻底理解js中this的指向,不必硬背。

    首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...

  8. Servlet实现asp.net中的Global.asax启动事件(Servlet和Listener使用)

    1.Java Web中没有像asp.net的全局启动事件,但是可以通过web.xml中的load-on-startup节点来控制Servlet的开机启动和启动次数.web.xml详细配置参考:http ...

  9. CSS命名规范

    DIV+CSS规范命名大全集合 前端人员必看CSS命名规范 整理: 文件名必须由小写字母.数字.中划线组成 ).所有的命名最好都小写,一律采用小写加中划线的方式,不允许使用大写字母或 _2).属性的值 ...

  10. ReactNative 适合初学的第一个教程demo,找租房

    1.下载工程 我看来看去,最让人容易入门的是这个demo: https://github.com/rayshen/PropertyFinder 是英国某开发者做的搜租房的小demo,包含的知识有:图片 ...