c# 不同窗体之间传值和调用
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# 不同窗体之间传值和调用的更多相关文章
- windows form (窗体) 之间传值小结
windows form (窗体) 之间传值小结 windows form (窗体) 之间传值小结 在windows form之间传值,我总结了有四个方法:全局变量.属性.窗体构造函数和deleg ...
- c# 日常记录,(获取系统时间、return),一些文件隐藏无法引用,c#多个窗体之间传值
1.获取系统时间 DateTime.Now.ToString(); DateTime dt =DateTime.Now; dt.AddDays(1); //增加一天 dt.AddDays(-1);// ...
- winform窗体 小程序【打开多个窗体、窗体之间传值、打开唯一窗体】
1.打开多个窗体 2.窗体之间的传值 3打开唯一窗体
- C#使用事件方式Winform窗体之间传值
[摘自:http://www.cnblogs.com/codeToUp/p/5371062.html] 工程的源代码地址:https://github.com/yes-or-no/WinFormTra ...
- 多窗体及窗体之间传值 以及listview的使用
三中打开窗口窗体状态: 1 messagebox.show 类型 特点: 从窗口form 1里打开另一个窗体form2,form2不关闭的情况下form1 不能操作:代码如下: private ...
- 观察者模式的应用:Winform窗体之间传值
观察者模式的应用:Winform窗体传值 观察者模式的概念: 定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并更新. 今天我们就学着用一下这个观察者模式,先想象 ...
- WinForm窗体之间传值
当程序需要将一个窗体中的一些信息传给另一个窗体并让其使用时,就需要用到这个知识点 方法一:通过接受参数的窗体的构造函数传值 例:现有Form1和Form2两个窗体,二者都包含一个文本框,Form1还包 ...
- WinForm 与WPF 窗体之间的想到调用
先放置一个容器控件,并设计 好WinForm(或WPF)窗口 winform 调用 wpf ElementHost el = new ElementHost(); el.Dock = DockStyl ...
- winform两个窗体之间传值(C#委托事件实现)
委托 定义一个委托,声明一个委托变量,然后让变量去做方法应该做的事. 委托是一个类型 事件是委托变量实现的 经典例子:两个winform窗体传值 定义两个窗体:form1和form2 form1上有一 ...
随机推荐
- FineUI(专业版)实现百变通知框(无JavaScript代码)!
博客园已经越来越不公正了,居然说我这篇文章没有实质的内容!! 我其实真的想问哪些通篇几十个字,没任何代码和技术分享,嚷嚷着送书的文章的就能雄霸博客园首页几天,我这篇文章偏偏就为管理员所容不下. 其实我 ...
- C#进阶系列——MEF实现设计上的“松耦合”(一)
前言:最近去了趟外地出差,介绍推广小组开发的框架类产品.推广对象是本部门在项目上面的同事——1到2年工作经验的初级程序员.在给他们介绍框架时发现很多框架设计层面的知识他们都没有接触过,甚至没听说过,这 ...
- 2.0(3)MongoDB数据导入导出
——————(1)数据导出———————— 导出为JSON格式 mongoexport -d '数据库' -c '表名' -o ***.json 导出为csv mongoexport -d '数据库' ...
- jsonp 跨域请求
背景: JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制,被称为"Same-Origin Policy"(同源 ...
- Delphi 实现数字转大写
从网上找的一段代码 /// <summary> /// 小写转大写 /// </summary> /// <param name="mmje"> ...
- 教你一招:在PowerPoint中自定义可输入文本的占位符
日常生活中,当我们设计多媒体课件时,默认的版式其实已经够用了.但是,很多时候,我们需要更加个性一点,所以,我们需要自定义很多东西.本文介绍在PowerPoint中自定义可输入文本的占位符. 一.占位符 ...
- Win10家庭版升级专业版密钥
步骤如下: Win10 Home 版本基础上,设置—更新安全—激活—更改产品密钥(或者 我的电脑右键—属性—右下角更改产品密钥),输入 VK7JG-NPHTM-C97JM-9MPGT-3V66T
- linux/ubuntu查看内核版本命令
打开终端,输入: uname -a
- Deepin 15.3 编译同步SudaMod 2.0
1.设置hosts,方便访问国外站点 $ wget https://raw.githubusercontent.com/racaljk/hosts/master/hosts -qO /tmp/host ...
- php 如何解决“您访问的域名有误或网页不存在”
对一个域名访问,在家访问正常,到办公室就总是看到下面的页面. 清楚浏览器浏览数据是一个解决途径.这里通过Chrome浏览做示例.通过标记路径,进入清除界面. 也可以在浏览器地址中输入 chrome:/ ...