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. Js 遍历json对象所有key及根据动态key获取值

    var obj = {}; for(var k in obj) { //遍历对象,k即为key,obj[k]为当前k对应的值 console.log(obj[k]); } 文章来自:https://z ...

  2. Apache Shiro系列三,概述 —— 10分钟入门

     一.介绍 看完这个10分钟入门之后,你就知道如何在你的应用程序中引入和使用Shiro.以后你再在自己的应用程序中使用Shiro,也应该可以在10分钟内搞定. 二.概述 关于Shiro的废话就不多说了 ...

  3. Sqoop2搭建及使用

    1. 下载并安装配置Sqoop [需要的环境:Hadoop,Java] 首先  Hadoop版本2.7.2 20161013 找了篇Sqoop的文章就开撸  结果发现什么1.3,1.9,又有什么Sqo ...

  4. 分享录制的正则表达式入门、高阶以及使用 .NET 实现网络爬虫视频教程

    我发布的「正则表达式入门以及高阶教程」,欢迎学习. 课程简介 正则表达式是软件开发必须掌握的一门语言,掌握后才能很好地理解到它的威力: 课程采用概念和实验操作 4/6 分隔,帮助大家理解概念后再使用大 ...

  5. Thinking in java学习笔记之LinkedList 与Stack

  6. hihoCoder 后缀自动机三·重复旋律6

    后缀自动机三·重复旋律6 时间限制:15000ms 单点时限:3000ms 内存限制:512MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为一段数构成的数列. 现在小Hi ...

  7. 为什么全世界都对HTTPS抛出了橄榄枝,HTTPS到底有什么好?HTTPS如何配置?

    整个互联网世界,正从"裸奔"向HTTPS时代转型. 淘宝.天猫在2015年完成规模巨大的数据"迁徙",将百万计的页面从HTTP切换到HTTPS:苹果要求所有iO ...

  8. JavaScript 中一些概念理解 :clientX、clientY、offsetX、offsetY、screenX、screenY

    clientX 设置或获取鼠标指针位置相对于窗口客户区域的 x 坐标,其中客户区域不包括窗口自身的控件和滚动条. clientY 设置或获取鼠标指针位置相对于窗口客户区域的 y 坐标,其中客户区域不包 ...

  9. elastichq 离线安装

    plugin install file:///home/hadoop/xxxx.zip 奇怪的是,这样安装成功后访问host:port:9200/_plugin/hq/ 仍然会报错,找不到一些js函数 ...

  10. 11月15日下午 ajax返回数据类型为XML数据的处理

    ajax返回数据类型为XML数据的处理 /*XML:可扩展标记语言 HTML:超文本标记语言 标签:<标签名></标签名> 特点: 1.必须要有一个根 2.标签名自定义 3.对 ...