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#代码延时的几种实现

    针对C#代码延时的实现,我们可以采用以下几种方法: 1.使用Thread.Sleep方法 Thread.Sleep方法是C#中比较常用的一种延时实现方式。这个方法可以使程序“休眠”一定的时间。下面是一个示例,演示了通过Thread.Sleep方法实现延时的代码: using System; using System.Threading; class Prog…

    C# 2023年6月1日
    00
  • C#对集合进行排序

    C#中有多种方式对集合进行排序,常用的有两种:使用比较器和使用Lambda表达式。下面分别进行介绍。 使用比较器对集合进行排序 步骤一:定义比较器 要使用比较器对集合进行排序,首先需要定义一个比较器类。比较器类需要实现 IComparer<T> 接口中的 Compare() 方法,并将其实现成为自己想要排序的方式。以下为示例代码: public …

    C# 2023年6月1日
    00
  • C#获取字符串后几位数的方法

    获取字符串后几位数可以通过几种不同的方式来实现。下面将介绍两种常用的方法。 方法一:使用Substring方法 C#中的字符串类提供了Substring方法来截取字符串中的子串。要获取字符串后几位数,只需要使用Substring方法,并将其参数设置为字符串长度减去所需的位数即可。 以下是实现该方法的代码示例: string str = "hello…

    C# 2023年6月8日
    00
  • 基于.net4.0实现IdentityServer4客户端JWT解密

    针对“基于.net4.0实现IdentityServer4客户端JWT解密”的完整攻略,具体步骤如下: 1.创建新项目 使用Visual Studio创建一个新项目,选择“ASP.NET Web应用程序”模板,创建后选择“Web API”模板,目标框架版本选为“.NET Framework 4.7.2”。创建完成后进入解决方案资源管理器,右键单击项目名称,选…

    C# 2023年6月1日
    00
  • jQuery使用$.ajax进行即时验证实例详解

    让我来详细讲解“jQuery使用$.ajax进行即时验证实例详解”。 标题 首先,我们需要了解一下什么是jQuery以及$.ajax。jQuery是一个快速且简洁的JavaScript库,它简化了HTML文档遍历、事件处理、动画等操作。而$.ajax是jQuery中一个重要的函数,用来进行异步请求,可以实现无需刷新页面即可获取/修改数据。 具体步骤 在实现即…

    C# 2023年6月8日
    00
  • C#实例化和静态类对象调用对比

    下面是针对“C#实例化和静态类对象调用对比”的完整攻略。 一、实例化对象调用方法 在C#中,我们可以创建一个类的实例,从而调用该类的方法或访问该类的属性。实例化对象可以通过new关键字创建,具体代码如下: MyClass obj = new MyClass(); // 创建MyClass类的实例,存储在obj变量中 obj.MyMethod(); // 调用…

    C# 2023年6月1日
    00
  • 在ASP.NET中使用JavaScript脚本的方法

    方法一:在ASP.NET Web Forms项目中引用JavaScript文件 在项目中创建JavaScript文件,在该文件中编写JavaScript代码 将JavaScript文件添加到项目中,并设置其属性为嵌入资源文件(Embedded Resource) 在ASP.NET页面中通过以下方式引用JavaScript文件: <script src=…

    C# 2023年5月31日
    00
  • 一步步打造简单的MVC电商网站BooksStore(1)

    我来为您讲解一下“一步步打造简单的MVC电商网站BooksStore(1)”的完整攻略。 概述 本文主要是为了介绍如何使用PHP语言和MVC架构模式搭建一个简单的电商网站BooksStore。通过本文,您将会了解到如何设计和实现一个基于MVC架构的网站,并且了解到如何通过简单的代码实现用户登录、商品浏览、商品购买等功能。 MVC架构模式 MVC是一种软件架构…

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