C# 委托 事件 之 窗体之间互传值

C# 委托 事件 之 窗体之间互传值

效果:

Form1.cs:

 

using System;
using System.Windows.Forms;
namespace 窗体事件互传值2
{
    public delegate void SetTxb2Del(string str, object obj);//定制针对Txb2的委托
    public partial class Form1 : Form
    {
        private event SetTxb2Del st2dEvent;//声明Txb2委托的事件
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();//实例化一个Form2窗体
            this.st2dEvent += new SetTxb2Del(f2.SetTxb2);//为事件注册Form2中设置txb2值的方法(待执行)
            this.st2dEvent(txb1.Text, this);//调用事件(参数传入方法SetTxb2,并执行)
            f2.ShowDialog();//展示窗体
        }
        /// <summary>
        /// 设置txb1文本的方法
        /// </summary>
        /// <param name="str">要设置为值的字符串</param>
        public void SetTxb1(string str)
        {
            txb1.Text = str;
        }
    }
}

  

Form2.cs:

using System;
using System.Windows.Forms;
namespace 窗体事件互传值2
{
    public delegate void SetTxb1Del(string str);//定制针对Txb1的委托
    public partial class Form2 : Form
    {
        private event SetTxb1Del st1dEvent;//声明Txb1委托的事件
        public Form2()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Form1 f1 = this.Tag as Form1;//从Tag属性得到Form1对象
            this.st1dEvent += new SetTxb1Del(f1.SetTxb1);//为事件注册Form1中设置txb1值的方法(待执行)
            this.st1dEvent(txb2.Text);//调用事件(参数传入方法SetTxb1,并执行)
            this.Close();//关闭窗口
        }
        /// <summary>
        /// 设置txb2文本的方法
        /// </summary>
        /// <param name="str">要设置为值的字符串</param>
        /// <param name="obj">源对象(Form1)</param>
        public void SetTxb2(string str, object obj)
        {
            txb2.Text = str;//设置文本框的值
            this.Tag = obj;//暂存Form1对象到当前Form2的Tag属性
        }
    }
}

  

时间: 2024-12-12 09:16:24

C# 委托 事件 之 窗体之间互传值的相关文章

C# 利用委托事件进行窗体间的传值(新手必看)

引言: 窗体间传值是每个学习WinForm新手的常见问题,最初级的方法就是 在窗体中先获取到要接受值窗体.然后通过.得到某个空间或者属性,直接赋值,这个需要接收放的窗体属性或者空间必须是public ,是极不安全的一种方式.在升级一下的新手做法就是在接受窗体中定义一个方法然后通过 调用这个方法来给某个控件或者属性赋值.这两种方法都是非安全的低级方式.非常不建议使用.本文我们讲讲如何通过委托事件(非单纯的委托)来解决窗体间信息传递的问题. 场景: 通过点击主主窗体From_Main的发送按钮,所有

WPF 委托 事件 B窗体调用A窗体方法

原文: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

Winform中利用委托实现窗体之间的传值

点击打开按扭,打开传输值窗体 public partial class Form1 : Form 2 { 3 public Form1() 4 { 5 InitializeComponent(); 6 } 7 8 public void getValue(string strV) 9 { 10 this.textBox1.Text = strV; 11 } 12 13 private void button1_Click(object sender, EventArgs e) 14 { 15 F

使用委托实现c#,窗体与窗体之间的传值

主界面: Form1中的代码: namespace _06委托练习_窗体传值{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        } private void btn1_Click(object sender, EventArgs e)        {            Form2 f2=new Form2(txt

C#各个窗体之间如何传值啊!

1.你自定义窗体时为窗体增加相应的属性,比如:class MyForm:Form{....private string something;public string Something{get{return something;}set{something=value;}}}通过类似这种属性来传值:form1.Something=xxx 2.另一种是建立一个中间件来存储数据,比如建立一个Record类:class Record{public static string Something;}二

winform使用委托和事件在窗体之间传值

定义委托和事件,并且触发这个事件 //定义委托 public delegate void ShowOutStockDelegate(List<OutStockResultDto> outStockResultDto); //定义事件 public event ShowOutStockDelegate ShowOutStockEvent; private void btnConfirm_Click(object sender, EventArgs e) { ShowOutStockEvent(o

使用委托进行窗体之间的传值

一.传统的方式 创建一个公共数据资源类,用于存储窗体2的TextBox的值: public class ComValue { public static string Txtvalue { get; set; } } 窗体1的代码: private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.Show(); } //使用timer 不停的对label2进行复制 private void t

数据库与窗体之间互传图片

private void button1_Click(object sender, EventArgs e)//从硬盘打开图片显示在窗体里面 { OpenFileDialog op = new OpenFileDialog();//造一个打开对话框 DialogResult dr =op.ShowDialog();//将打开对话框显示出来 if(dr==DialogResult.OK) //如果点的是"打开" { FileStream fs = new FileStream(op.Fi

winform独立窗体之间传值的简单方法

最近做一个多窗体联动的小程序,用到了窗体间传值. 网络上到处都是父窗体和子窗体之间传值的方法,总结起来有 1.有参数的构造函数, 2.委托 以委托为例,父窗体如果想要发送信息给子窗体,只需要在父窗体中定义好事件. //str为发送内容,formName为指定要发送给的窗体名字 public delegate void ReceiveMsg(string str,string formName); public event ReceiveMsg receiveMsg; 然后在实例化子窗体时,将子窗