`
pcajax
  • 浏览: 2168067 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

C#利用委托实现窗体间的值传递

阅读更多

C#利用委托实现窗体间的值传递

 A、网上有很多方法,大家可搜一下,都可用。
B、这里只是说明下是只利用委托,学习基本的委托运用。
方法如下:
1、C#建立一个默认工程,默认窗体Form1
2、加入一个新窗体,默认Form2
3、Form1窗体上放一个Label,一个Button,属性分别为:
this.label1.Text = ""; // 清空label的值
this.button1.Text="otherForm"; //设置button显示为otherForm
 
view plaincopy to clipboardprint?
protected override void OnLoad(EventArgs e)  
{  
    base.OnLoad(e);  
    this.label1.Text = "";  
    this.button1.Text = "otherForm";  

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            this.label1.Text = "";
            this.button1.Text = "otherForm";
        }
4、Form2窗体上放一个textbox1,一个Button,属性分别为:
this.textbox1.Text = ""; //清空textbox的值
this.button1.Text = "input"; //设置button显示为input(输入)
view plaincopy to clipboardprint?
protected override void OnLoad(EventArgs e)  
{  
    base.OnLoad(e);  
    this.textBox1.Text = "";  
    this.button1.Text = "input";  

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            this.textBox1.Text = "";
            this.button1.Text = "input";
        }
5、上面的步骤就建立了两个基本的窗体,接下来回到Form1的代码设计视图
拷贝下面代码
 view plaincopy to clipboardprint?
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 WindowsFormsApplication1  
{  
    public partial class Form1 : Form  
    {  
        public Form1()  
        {  
            InitializeComponent();  
        }  
 
        protected override void OnLoad(EventArgs e)  
        {  
            base.OnLoad(e);  
            this.label1.Text = "";  
            this.button1.Text = "otherForm";  
        }  
 
        private void button1_Click(object sender, EventArgs e)  
        {  
            Form2 frm2 = new Form2();  
            returnValueEvent += new returnValue(Form1_returnValueEvent);  
            frm2.Show();  
        }  
 
        void Form1_returnValueEvent(string str)  
        {  
            // throw new NotImplementedException();  
            this.label1.Text = str;  
        }  
 
        // 定义委托  
        public delegate void returnValue(string str);  
        // 委托的事件  
        public static event returnValue returnValueEvent;  
        // 委托的事件的函数  
        public void doReturnValue(string str)  
        {  
            returnValueEvent(str);  
        }  
    }  

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 WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            this.label1.Text = "";
            this.button1.Text = "otherForm";
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            returnValueEvent += new returnValue(Form1_returnValueEvent);
            frm2.Show();
        }
        void Form1_returnValueEvent(string str)
        {
            // throw new NotImplementedException();
            this.label1.Text = str;
        }
        // 定义委托
        public delegate void returnValue(string str);
        // 委托的事件
        public static event returnValue returnValueEvent;
        // 委托的事件的函数
        public void doReturnValue(string str)
        {
            returnValueEvent(str);
        }
    }
}
6、在Form2的代码设计视图中,拷贝下面代码
view plaincopy to clipboardprint?
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 WindowsFormsApplication1  
{  
    public partial class Form2 : Form  
    {  
        public Form2()  
        {  
            InitializeComponent();  
        }  
 
        protected override void OnLoad(EventArgs e)  
        {  
            base.OnLoad(e);  
            this.textBox1.Text = "";  
            this.button1.Text = "input";  
        }  
 
        private void button1_Click(object sender, EventArgs e)  
        {  
            Form1 frm1 = new Form1();  
            frm1.doReturnValue(this.textBox1.Text);  
        }         
    }  

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 WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            this.textBox1.Text = "";
            this.button1.Text = "input";
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Form1 frm1 = new Form1();
            frm1.doReturnValue(this.textBox1.Text);
        }      
    }
}
7、运行后,就可以在两个窗体间传递参数了
 
注:重点是第六步中的,对委托的定义和调用
 
        returnValueEvent += new returnValue(Form1_returnValueEvent);

        void Form1_returnValueEvent(string str)
        {
            // throw new NotImplementedException();
            this.label1.Text = str;
        }
        // 定义委托
        public delegate void returnValue(string str);
        // 委托的事件
        public static event returnValue returnValueEvent;
        // 委托的事件的函数
        public void doReturnValue(string str)
        {
            returnValueEvent(str);
        }
 在Form2中的调用,在按钮的click事件中
            Form1 frm1 = new Form1();
            frm1.doReturnValue(this.textBox1.Text);

分享到:
评论

相关推荐

    C#利用委托实现窗体传值

    C#利用委托实现窗体传值

    C#委托示例,窗体之间传递数据例子,最简单的委托例子

    本人做的一个非常简单 C#委托的例子,很基础很简单的一个小例子,最最适合委托初学者参看。再结合资料,相信学通C#委托...委托很好的解决了窗体之间的数据传递和方法调用,非常实用,通过这个例子相信能让你恍然大悟。

    两个DataGridView通过委托实时传值,安全高效 C# 两个窗体之间实时传递数据的实例。利用委托和事件的方法,从子窗体传送数据到主窗体。比较安全。

    总结起来,通过在C#中使用委托和事件,我们可以实现在两个窗体之间安全、高效地传递`DataGridView`的数据。这种方法不仅适用于`DataGridView`,还可以扩展到其他需要跨窗体通信的场景,只要正确管理和触发事件,就能...

    C#委托实现窗体间传值

    在这个"简単委托实例"中,我们将深入探讨如何利用委托来实现在多个窗体(Form)之间传递数据,特别是在Visual Studio 2008环境下。 1. **委托的理解**: - 委托在C#中是类的实例,它封装了一个或多个方法。这个类...

    c#vs2010 窗体间值传递

    总结来说,"c#vs2010 窗体间值传递"是一个涵盖多个技术点的主题,包括C#窗体间的通信方式、权限设计原则、软件架构设计、前端库jQuery的使用,以及测试策略。理解并熟练掌握这些知识点,对于提升C#应用程序的开发...

    C#利用事件委托实现窗体的传值做的计算器

    在这个名为“C#利用事件委托实现窗体的传值做的计算器”的项目中,我们将探讨如何通过这些概念来创建一个功能完备的计算器应用程序。 首先,让我们理解一下什么是委托。委托在C#中是一种类型,它代表了方法的引用,...

    C# winform窗体间传值(使用委托或事件)

    ###方法2:通过委托,在子窗体显示之前,为委托赋值,关注主窗体的数据变化,当有当有多个窗体需要接收信息,只需要为委托继续赋值(+=)即可,实现了数据传递的解耦性; ###方法3:子窗体弹出来之前,注册事件,...

    C# 使用委托方式Usercontrol与主窗体进行消息传递

    通过这种方式,我们可以使用C#的委托在UserControl和主窗体之间安全、高效地传递消息。这种方法不仅限于简单的字符串消息,还可以传递任何复杂的数据结构,使得组件间的通信更加灵活。同时,由于使用了事件模型,...

    c#演示两个窗体间参数的传递

    通过以上步骤,初学者可以了解和实现C#窗体间的参数传递。在实际开发中,可能会有更复杂的情况,如多层窗体间的传递、异步操作后的传递等,但基本原理都是类似的。熟练掌握这一技能,将有助于构建更复杂的多窗口应用...

    c# 委托、子窗体往父窗体传值,DEMO,完整源码

    在子窗体向父窗体传递值的场景中,我们可以使用委托来实现通信。假设我们有一个主窗体(ParentForm)和一个子窗体(ChildForm)。在子窗体中,用户输入一些数据,然后我们希望通过某种方式将这些数据传递回主窗体。...

    C# 两个窗体之间实时传递数据的实例

    在C#编程中,开发GUI应用程序时经常需要在不同的窗体之间传递数据。在这个实例中,我们将探讨如何在两个窗体之间...通过学习和实践这个实例,你将更深入地理解C#中委托和事件的应用,以及在窗体间传递数据的最佳实践。

    委托模式窗体间消息传递(多播委托)

    在本场景中,"委托模式窗体间消息传递(多播委托)"是一种设计模式,用于在多个窗体之间共享数据或通知状态改变。这种技术尤其在Windows桌面应用开发中常见,例如使用C#或VB.NET构建的WPF或WinForms应用程序。 **...

    委托:实现窗体间的传值

    通过这种方式,我们利用C#的委托和事件机制实现了WinForm窗体间的值传递。这种方法不仅简洁,而且符合面向对象的设计原则,使得代码结构清晰,易于维护。同时,它还支持异步通信,因为事件可以跨线程触发和处理。 ...

    c# 委托、父窗体传值到子窗体,DEMO,完整源码

    在C#编程中,委托是一种强大的工具,它允许我们传递方法作为参数,或者将多个方法绑定到一个事件...通过学习这个DEMO,开发者能够更好地理解如何利用委托实现窗口间的通信,以及如何在Visual Studio中进行项目管理。

    Visual C#中实现窗体间的数据传递.rar_CSharp 窗体_c#数据传递_窗体_窗体 CSharp

    本文将深入探讨在Visual C#中如何实现窗体间的数据传递,以及相关的C#编程技巧。 首先,让我们理解窗体(Forms)的概念。在C#的Windows Forms应用中,窗体是用户界面的基础,它们承载着控件(Controls),如按钮、...

    c#利用委托来实现关闭子窗口通知父窗口执行方法

    ### C#中利用委托实现子窗口关闭时通知父窗口执行特定方法 在C#中,事件和委托是非常重要的概念,特别是在处理用户界面交互时。本文将详细介绍如何利用委托(Delegate)来实现在关闭子窗口时通知父窗口执行特定的...

    使用委托进行窗体间传值

    "使用委托进行窗体间传值"是一种高效且灵活的方法,它利用了C#中的事件处理机制和委托的概念。下面我们将深入探讨这个主题。 首先,我们需要理解什么是委托。在C#中,委托是类型安全的函数指针,可以引用一个或多个...

    C#Winform委托事件实现窗体信息传递实例源代码.rar

    在这个实例中,我们将探讨如何利用C#中的委托和事件机制来实现在Winform窗体间的通信。以下是详细的知识点解析: 1. 委托(Delegate): - 委托是C#中的一种类型,它代表一个方法的引用。你可以将委托视为指向特定...

Global site tag (gtag.js) - Google Analytics