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日

相关文章

  • .net中as和is之间的区别分析

    我来为你详细讲解一下“.net中as和is之间的区别分析”。 1. as和is的基本使用 在.NET中,as和is都是类型操作符,用于类型转换或类型检查。 1.1 as操作符 as操作符用于将一个引用类型转换为另外一个引用类型,或将一个类类型转换为其派生类型。如果转换失败,则as返回null,而不是抛出异常。例子如下: object obj = "…

    C# 2023年5月31日
    00
  • SuperSocket封装成C#类库的步骤

    将SuperSocket封装成C#类库的步骤如下: 第一步,首先需要创建一个新的C#类库项目。打开Visual Studio,选择“新建项目”,选择“类库”类型并命名项目。 第二步,安装SuperSocket的NuGet包。在“解决方案资源管理器”中,右键点击“引用”文件夹,选择“管理NuGet程序包”。在搜索栏中输入“SuperSocket”,安装最新版本…

    C# 2023年6月1日
    00
  • jQuery $.get 的妙用 访问本地文本文件

    下面是关于“jQuery $.get的妙用访问本地文本文件”的完整攻略,包含两个示例。 1. jQuery $.get访问本地文本文件简介 在Web开发中,我们经常需要访问本地文本文件。使用jQuery的$.get方法可以轻松地访问本地文本文件。$.get方法是jQuery中的一个AJAX方法,可以用于从服务器加载数据。在本地文件中,我们可以使用$.get方…

    C# 2023年5月15日
    00
  • .NET Framework中定时器timer的单线程与多线程使用讲解

    .NET Framework中定时器timer的单线程与多线程使用讲解 什么是定时器timer 在 .NET Framework中,Timer 是一种计时器,用于定期执行一些操作。可以使用 Timer 指定在多长时间后执行一个操作。可用作定期检查磁盘驱动器、定期下载网页或文件,或定期脚本。Timer 可在 Windows.Forms、ASP.NET、WPF …

    C# 2023年6月3日
    00
  • jquery+ajax+C#实现无刷新操作数据库数据的简单实例

    下面我将为你详细讲解“jquery+ajax+C#实现无刷新操作数据库数据的简单实例”的完整攻略。 1. 准备工作 在开始前,你需要先准备好以下工作: 一台装有IIS、SQL Server等环境的Windows服务器。 一份C#项目,其中包含与数据库交互的代码。 一个HTML页面,用于调用Ajax和展示数据。 2. 实现步骤 2.1 配置Web.config…

    C# 2023年5月15日
    00
  • 详解C#编程中异常的创建和引发以及异常处理

    详解C#编程中异常的创建和引发以及异常处理 在C#编程中,异常是一种表示在程序执行过程中出现的错误或异常情况的机制。当程序执行期间发生异常时,通常需要采取一些措施来处理这些异常,以避免程序崩溃或产生意外的结果。本文将详细讲解C#编程中异常的创建和引发以及异常处理的完整攻略。 异常的创建和引发 要创建和引发异常,需要执行以下几个步骤: 声明并定义异常类。异常类…

    C# 2023年5月15日
    00
  • 浅谈C#数组(一)

    来分享一下“浅谈C#数组(一)”的完整攻略。 简介 C#中的数组是一组具有相同数据类型的元素的集合。在C#中声明数组时需要指定数据类型、数组名称和数组元素数量。 声明和初始化数组 在C#中声明数组的语法如下: <数据类型>[] <数组名称> = new <数据类型>[<元素数量>]; 例如: int[] num…

    C# 2023年5月15日
    00
  • 基于C#开发中的那些编码问题(详谈)

    基于C#开发中的编码问题 在C#开发中,编码问题是一个非常重要的话题。因为不同的编码会导致程序在不同环境中的表现不同,甚至会导致程序出现异常或崩溃。下面是基于C#开发中的几个常见编码问题。 1. 字符编码问题 在C#中,字符串是以Unicode编码的方式存储的,也就是说每个字符都是由两个字节表示的。然而,在不同的环境中,字符串的编码会出现不同的情况,比如在数…

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