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. 2015年3月阿里内推(c++研发)实习生电面经历

    2015年3月开学开始就听说阿里会有内推,果不其然在师兄的引荐下推了菜鸟网络,但是在学校的BBS上看到了阿里云部门,而且要会C++,这使我更感兴趣,重新选择了方向,当然最后选择了阿里云.在此分享一下三 ...

  2. SQLite剖析之异步IO模式、共享缓存模式和解锁通知

    1.异步I/O模式    通常,当SQLite写一个数据库文件时,会等待,直到写操作完成,然后控制返回到调用程序.相比于CPU操作,写文件系统是非常耗时的,这是一个性能瓶颈.异步I/O后端是SQLit ...

  3. 旧版青奥遇到的bug

    1.Cannot create PoolableConnectionFactory (Unknown database 'yoms') 答:服务器上的库都被人删了. 2.Cannot create P ...

  4. React.js常识

    1.React的特点: 简单.声明式-自动dom操作. React核心:组件,组件的设计目的:提高代码复用率,降低测试难度和代码复杂度. 提高代码复用率:组建将数据和逻辑进行封装,类似面向对象的类: ...

  5. java基于socket的简单聊天系统

    /*=============服务端================*/ /** * 服务器程序 在9999端口监听 * 可以通过控制台输入来回应客户端* @author xiaoluo* @qq 3 ...

  6. [转]Struts2理解--动态方法和method属性及通配符_默认Action

    众所周知,默认条件下,在浏览器输入indexAction!execute.action,便会执行indexAction类里的execute方法,这样虽然方便,但可能带来安全隐患,通过url可以执行Ac ...

  7. Android异步消息处理机制完全解析,带你从源码的角度彻底理解(转)

    开始进入正题,我们都知道,Android UI是线程不安全的,如果在子线程中尝试进行UI操作,程序就有可能会崩溃.相信大家在日常的工作当中都会经常遇到这个问题,解决的方案应该也是早已烂熟于心,即创建一 ...

  8. CSS3选择器:nth-of-type

    碰到了个选择器,:nth-of-type <!DOCTYPE html> <html> <head> <meta http-equiv="Conte ...

  9. Java+jquery实现裁剪图片上传到服务器

    大体分两步: 1.利用jquery裁剪图片,把裁剪到的几个点传入后端 2.利用前端传入的几个点,来裁剪图片 首先,用到一个jquery的插件 imgAreaSelect 实例及插件下载地址:http: ...

  10. Git------Win7系统使用TortoiseGit

    转载: https://my.oschina.net/longxuu/blog/141699?p=1 此步可以省略 1.点击TortoiseGit->PuTTygen 2.点击"Gen ...