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

C#使用Event在窗体之间传递消息和参数

 
阅读更多

有时候需要在两个窗体之间传递事件或者参数,例如一个登陆窗体,要将用户名和密码传递给主窗体,使用Event不但可以使主窗体在登录窗体关闭后再显示出来,还可以将数据传递到主窗体,代码很简单,要注意的是要判断事件是否为空,不然会出现空指向异常:

FormLogin代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Login
{
    public delegate void myDele(string id, string pwd);//声明代理

    public partial class FormLogin : Form
    {
        public event myDele myEvent;//声明事件
 
        public FormLogin()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)//按钮事件
        {
           if (myEvent != null)//一定要判断事件是否为空,否则会出现空指向异常
           {
               myEvent(textBox1.Text, textBox2.Text);//触发事件
           }
           Close();
        }
    }
}

 

Form1代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Login
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            FormLogin flogin = new FormLogin();
            flogin.myEvent += new myDele(flogin_myEvent);//添加事件
            flogin.ShowDialog(this);//显示窗口
        }

        void foglin_myEvent(string id, string pwd)//事件处理函数
        {
            label1.Text = id;
            label2.Text = pwd;
        }
    }
}

 
Login窗体

主窗体:



 
 程序执行流程是:实例化主窗体时,先将Login窗体以对话框方式显示出来;在Button1按钮事件中,因为Form1中为FormLogin窗体的MyEvent添加了事件foglin_myEvent,因此在Login中执行myEvent时会调用foglin_myEvent,

并把id和pwd作为参数,这时就可以在foglin_myEvent函数中接受这些从Login窗体中来的参数了。

  • 大小: 8.1 KB
  • 大小: 10.6 KB
  • 大小: 10.6 KB
分享到:
评论
1 楼 asdf_2012 2017-04-24  
兄弟简单明了。
顶你

相关推荐

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

    在C#编程中,开发GUI应用程序时经常需要在不同的窗体之间传递数据。在这个实例中,我们将探讨如何在两个窗体之间实现实时的数据传递,主要采用委托和事件的技术。这种方式可以确保数据的安全性,避免了直接引用导致...

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

    在C#编程中,消息传递是UI组件之间通信的关键机制,特别是当我们在用户控件(UserControl)和主窗体(Form)之间需要交换数据时。本文将深入探讨如何使用委托(Delegate)来实现这一目标,确保代码的灵活性和可维护性。 ...

    C# 使用Usercontrol与主窗体进行消息传递

    在C#编程中,UserControl是一种自定义控件,它允许开发者组合多个基本控件以创建复杂的用户界面...总之,熟练掌握委托和事件在UserControl与主窗体间的消息传递,将极大地提升你在C# Windows Forms开发中的效率和能力。

    C# winfrom 窗体之间发消息

    在WinForms应用中,我们可能需要在一个窗体(form)执行某些操作后通知另一个窗体,或者在多个窗体之间传递数据。这通常通过事件、委托(Delegate)和接口(Interface)实现。以下是对这个主题的详细解释: 1. **...

    C#跨窗体参数传递

    在C#编程中,跨窗体参数传递是应用程序设计中常见的需求,特别是在开发具有多个界面的桌面应用时。本主题将深入探讨如何在不同的窗体之间有效地传递数据,以实现功能如从一个窗体的文本框输入数据并在另一个窗体上...

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

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

    c# 窗体间图片传递

    在C#编程中,窗体间图片传递是一个常见的需求,特别是在开发GUI应用程序时,比如图像查看器、图像编辑器等。这个过程涉及到多个窗口或窗体之间的数据交互,特别是图像对象的传递。以下是对这个主题的详细解释: 一...

    C#窗体间传递控件信息

    标题"‘C#窗体间传递控件信息"’指的是如何在不同的Windows Form窗口之间共享和修改数据,特别是涉及到控件的值。描述中提到的“在构造方法中传”是指在创建新窗体实例时,将数据作为参数传递。 首先,理解窗体间...

    C#子窗体修改父窗体(窗体间传值)

    这种方法不仅限于文本更新,还可以应用于任何需要从子窗体向父窗体传递数据或改变父窗体行为的场景。 总结起来,本示例涉及的关键知识点包括: 1. C# 委托:了解如何定义委托类型和如何使用委托引用方法。 2. C# ...

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

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

    Visual_C#_实现窗体间数据传递

    另一个常见的设计模式是使用 Messenger 类,它是一个简单的消息传递系统,允许在窗体之间发送和接收消息。这提供了一种松耦合的方式,使得窗体之间的通信更加灵活。 6. **利用序列化和反序列化**: 对于更复杂的...

    C#多窗体之间数据传递

    在多窗体应用中,通常有两种常见的数据传递方式:使用公共属性或者使用事件和委托。本例中,我们主要关注后者,因为这种方式更加灵活,特别是在需要传递复杂数据结构时。 1. **定义委托**: 首先,我们需要创建一...

    C#通过子窗体刷新父窗体

    本篇将详细介绍如何在C#环境下,使用Visual Studio 2008实现子窗体对父窗体的刷新操作。 首先,我们需要理解窗体之间的关系。在C#中,窗体通常以类的形式存在,一个应用程序可能有多个窗体实例。父窗体通常是主程序...

    C# WinForm之间调用、窗口之间传递参数的例子

    下面我们将深入探讨如何在C# WinForm应用中实现窗体之间的调用和参数传递。 首先,让我们理解窗体之间的调用。在C#中,我们可以创建一个窗体类的实例来打开一个新的窗体。例如,如果我们有两个窗体`Form1`和`Form2`...

    C#编程 窗体控件传递

    本示例将深入探讨如何在不同的窗体之间传递数据,帮助开发者更有效地理解和应用这一技术。 首先,让我们理解窗体(Form)和控件(Control)的基本概念。在C#中,窗体是应用程序的可视化界面,而控件是放置在窗体上...

    C#控制WinForm窗体间数据交互的方法

    在实际项目中,经常会遇到需要在不同窗体之间传递数据的情况。本文将详细介绍几种常见的WinForm窗体间数据交互方法,并深入分析各自的优缺点。 #### 方法一:自定义构造函数 这种方法是通过在子窗体中自定义一个...

    C# winform 窗体之间传参

    本文将深入探讨如何在WinForm窗体之间传递参数,包括基本类型的数据传递、对象传递以及使用事件和委托的方式。 一、基本类型数据传递 1. 构造函数传参:创建新窗体实例时,可以通过构造函数将参数传入。例如,在`...

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

    在C#编程中,委托是一种强大的工具,它允许我们传递方法作为参数,或者将多个方法绑定到一个事件处理程序上。在这个"父窗体传值到子窗体,DEMO"中,我们可以深入理解委托如何在窗口之间的通信中起到关键作用。这个...

    C#中在一个窗体里调用另一个窗体的方法

    在C#中,窗体之间的方法调用是一个常见的需求,特别是在复杂的桌面应用程序设计中。本文将根据提供的标题、描述、标签以及部分内容,详细介绍如何在C#的一个窗体中调用另一个窗体的方法,并探讨其中涉及的技术细节。...

    c#vs2010 窗体间值传递

    本文将详细探讨如何在不使用`ShowDialog`方法的情况下,在C#中实现VS2010窗体间的值传递。 首先,理解窗体间值传递的基本概念。在C#中,窗体是用户界面的主要构建块,它们可以独立存在或相互交互。当需要在一个窗体...

Global site tag (gtag.js) - Google Analytics