C#窗体传值实例汇总

C#窗体传值实例汇总

简介

在C#窗体应用程序中,传递数据是非常常见的需求,本文将对C#窗体传值相关知识进行汇总与讲解,包括如何在不同窗体间传递数据、如何使用委托传递数据、如何使用事件传递数据等。

不同窗体间传递数据

方法一:通过构造函数传值

在窗体A中,对窗口B进行实例化时,通过构造函数传递参数即可。

// 窗体A
private void button1_Click(object sender, EventArgs e)
{
    Form2 form2 = new Form2(textBox1.Text);
    form2.Show();
}

// 窗体B
public partial class Form2 : Form
{
    private string str;

    public Form2(string str)
    {
        InitializeComponent();
        this.str = str;
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        label1.Text = str;
    }
}    

方法二:通过属性传值

在窗体A中,对窗口B进行实例化后,通过属性传递参数即可。

// 窗体A
private void button1_Click(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    form2.Str = textBox1.Text;
    form2.Show();
}

// 窗体B
public partial class Form2 : Form
{
    private string str;

    public string Str
    {
        get { return str; }
        set { str = value; }
    }

    public Form2()
    {
        InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        label1.Text = str;
    }
}    

使用委托传递数据

委托基本概念

委托是C#中一种非常重要的类型,它类似于C/C++中的函数指针,是对函数的封装。使用委托可以将一个方法作为参数传递给另外一个方法。

// 定义委托
delegate void MyDelegate(string str);

// 定义方法
private void Method1(string str)
{
    Console.WriteLine(str);
}

private void Method2(MyDelegate myDelegate)
{
    myDelegate("Hello World!");
}

MyDelegate myDelegate = new MyDelegate(Method1);
Method2(myDelegate);

使用委托传值

在窗体A中,定义一个委托并实现对应的方法,在窗体B中定义一个委托类型的事件,当窗体B中的事件被触发时,进行委托调用即可。

// 窗体A
public delegate void MyDelegate(string str);
public event MyDelegate MyEvent;

private void button1_Click(object sender, EventArgs e)
{
    MyEvent(textBox1.Text);
}

private void Form1_Load(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    MyEvent += new MyDelegate(form2.ShowString);
}

// 窗体B
public partial class Form2 : Form
{
    public void ShowString(string str)
    {
        label1.Text = str;
    }

    public Form2()
    {
        InitializeComponent();
    }
}

使用事件传递数据

事件基本概念

事件是C#中一种非常重要的机制,用于响应特定的动作。事件类似于委托,由委托类型的变量和与其相关联的事件方法(也称为处理方法)组成。

public delegate void MyDelegate(string str);

public class MyClass
{
    public event MyDelegate MyEvent;

    public void Method(string str)
    {
        if (MyEvent != null)
        {
            MyEvent(str);
        }
    }
}

public class Program
{
    static void Main(string[] args)
    {
        MyClass myClass = new MyClass();
        myClass.MyEvent += new MyDelegate(Method1);
        myClass.Method("Hello World!");
    }

    private static void Method1(string str)
    {
        Console.WriteLine(str);
    }
}

使用事件传值

在窗体A中,定义一个事件并实现对应的方法,在窗体B中定义一个事件的委托类型的字段,当窗体B中的事件被触发时,进行委托调用即可。

// 窗体A
public delegate void MyDelegate(string str);
public event MyDelegate MyEvent;

private void button1_Click(object sender, EventArgs e)
{
    if (MyEvent != null)
    {
        MyEvent(textBox1.Text);
    }
}

private void Form1_Load(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    MyEvent += new MyDelegate(form2.ShowString);
}

// 窗体B
public partial class Form2 : Form
{
    public event MyDelegate MyEvent;
    private string str;

    public Form2()
    {
        InitializeComponent();
        MyEvent += new MyDelegate(ShowString);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (MyEvent != null)
        {
            MyEvent(textBox1.Text);
        }
    }

    public void ShowString(string str)
    {
        this.str = str;
        label1.Text = str;
    }
}

以上是传递数据的三种方式,根据实际需求选择对应的方法即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#窗体传值实例汇总 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • C#获取web.config配置文件内容的方法

    以下是关于“C# 获取 web.config 配置文件内容的方法”的完整攻略。 1. 获取 web.config 配置文件的路径 在 C# 中获取 web.config 配置文件的路径有如下两种方法: 方法一:使用 HttpContext string path = HttpContext.Current.Server.MapPath("~/web…

    C# 2023年6月1日
    00
  • 轻松学习C#的foreach迭代语句

    当我们需要遍历数组、集合或者其他集合类的数据时,就需要使用foreach迭代语句。在C#中,foreach语句是用于迭代访问集合(数组、字符串或其他集合类型)中的每个元素的最简单的方法之一。下面是一些关于使用foreach语句进行迭代的技巧和示例: 1. foreach语句语法格式 C#中foreach的语法非常简单。下面是foreach语法的信息: for…

    C# 2023年6月1日
    00
  • C#实现将一个字符串进行翻转显示的6种方法

    下面给出C#实现将一个字符串进行翻转显示的6种方法的完整攻略。 步骤1:分析题目要求 题目要求将一个字符串进行翻转显示,该字符串可以包含中英文、数字、标点符号,我们需要使用C#实现该功能,并提供6种实现方法。 步骤2:C#实现翻转字符串 方法1:使用Array.Reverse()方法 我们可以使用C#的Array.Reverse()方法来实现字符串翻转。该方…

    C# 2023年6月7日
    00
  • C++泛型编程Generic Programming的使用

    C++泛型编程Generic Programming的使用攻略 什么是泛型编程Generic Programming 泛型编程是一种以通用算法为基础写程序的方式,它在写程序时把算法和数据结构的实现分开,以达到复用代码的目的。C++中泛型编程主要通过模板来实现。 泛型编程的优点 可重用性:泛型编程可以复用代码,使用一个函数解决多个问题。 可扩展性:当在实现具体…

    C# 2023年6月7日
    00
  • .Net Core限流的实现示例

    .NET Core限流的实现示例 在高并发的应用程序中,限流是一种重要的技术,可以帮助我们控制请求的流量,防止系统过载。本攻略将介绍如何在.NET Core中实现限流,并提供两个示例说明。 实现限流 在.NET Core中,我们可以使用以下方法来实现限流: 1. 令牌桶算法 令牌桶算法是一种常用的限流算法,它基于一个令牌桶,每个请求需要从令牌桶中获取一个令牌…

    C# 2023年5月17日
    00
  • C# Split分隔字符串的应用(C#、split、分隔、字符串)

    C# Split分隔字符串的应用 在C#中,Split方法用于将一个字符串分隔成若干个子串,并将这些子串存放在一个字符串数组中。 以下我们将详细讲解Split方法的使用步骤及示例说明。 使用步骤 首先创建一个字符串对象,该对象表示待分隔的字符串。 string str = “C# Split 分隔字符串的应用”; 调用Split方法,设置分隔符,并将分隔后的…

    C# 2023年6月1日
    00
  • c# FTP上传文件实例代码(简易版)

    下面是针对“c# FTP上传文件实例代码(简易版)”这篇文章的详细讲解攻略。 1. 什么是FTP上传? FTP(文件传输协议)是一种用来在网络上传递文件的协议。FTP上传即是将本地文件通过FTP协议上传到远程FTP服务器,从而实现将文件在不同计算机之间进行传输的目的。 2. c# FTP上传文件实例代码说明 2.1 前置条件 在进行c# FTP上传文件前,需…

    C# 2023年5月31日
    00
  • c#实现ini文件读写类分享

    c#实现ini文件读写类分享 简介 在Windows系统中,ini文件长期以来一直是用来存储应用程序的配置参数的一种方法。尽管现在INI文件不再是首选方式,但是INI文件仍然很有用,因为它们简单并且容易编辑。 本文将分享如何使用C#实现INI文件读写功能的类。 实现 首先,我们需要创建一个新的INI文件读写类。以下是这个类的基本结构简述: using Sys…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部