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日

相关文章

  • 在ASP.NET 2.0中操作数据之六:编程设置ObjectDataSource的参数值

    操作数据是Web应用程序中最常见的任务之一。在ASP.NET 2.0之后,为了简化设置数据源和处理数据的任务,可以使用ObjectDataSource控件。本攻略将详细讲解如何编程设置ObjectDataSource的参数值。 什么是ObjectDataSource ObjectDataSource是ASP.NET用于极度简化数据访问代码的控件之一。利用Ob…

    C# 2023年5月31日
    00
  • Asp.net配合easyui实现返回json数据实例

    下面是 “Asp.net配合easyui实现返回json数据实例” 的完整攻略: 什么是Asp.net与EasyUI配合返回JSON数据 Asp.net是一种基于Microsoft .NET平台的Web开发技术,其核心是ASP.NET框架,可帮助开发者快速创建强大的Web应用。而EasyUI是一种JavaScript框架,可用于创建复杂的Web界面和互动体验…

    C# 2023年5月31日
    00
  • C#窗体间常用的几种传值方式及委托与事件详解

    C#窗体间常用的几种传值方式及委托与事件详解 本文将介绍C#窗体之间常用的几种传值方式,包括参数传递、全局变量、委托、事件等,并详解委托与事件的概念和使用方法。 参数传递 参数传递是最简单的窗体之间传值的方式,即在调用方法时将参数传递给被调用方法。 示例: public partial class Form1 : Form { public Form1() …

    C# 2023年5月31日
    00
  • C#创建安全的栈(Stack)存储结构

    下面是关于C#创建安全的栈(Stack)存储结构的完整攻略: 1. Stack的概念 Stack是一种线性的数据结构,可以通过’栈顶’进行插入、删除和访问元素。栈的特殊性在于它是LIFO(后进先出)模型,就像一叠盘子,最后放上去的盘子将会最先被取走。 2. C#的Stack类 在C#中,Stack类封装了栈的逻辑,可以使用其提供的方法来创建、push(添加)…

    C# 2023年5月15日
    00
  • asp.net分页控件使用详解【附实例下载】

    ASP.NET分页控件使用详解 本文主要介绍ASP.NET中常用的分页控件——PagedDataSource的使用方法,以及如何通过该控件实现简单的分页操作。 PagedDataSource控件简介 PagedDataSource控件是ASP.NET中提供的一个数据分页控件,当数据量较大时,可使用该控件将数据分页显示,增强数据展示的可读性。 PagedDat…

    C# 2023年6月3日
    00
  • C#中IDispose接口的实现及为何这么实现详解

    下面是关于C#中IDisposable接口的实现及为何这么实现的详解,包含两个示例说明。 什么是IDisposable接口 在C#中,当需要使用一些非托管资源时(例如文件、数据库连接、Socket等等),程序需要手动释放这些资源,否则会造成占用资源过多,程序出现异常或运行缓慢等问题。为了实现资源的自动释放,C#定义了IDisposable接口。 IDispo…

    C# 2023年6月6日
    00
  • C#在LINQ中使用GroupBy

    接下来我将为你讲解C#在LINQ中使用GroupBy的完整攻略。 1. 概述 在LINQ中,我们可以使用GroupBy方法对数据进行分组,GroupBy方法返回一个IEnumerable类型的集合,其中TKey是分组的条件,TSource是分组的元素。在Grouping中,有一个Key属性,用于获取当前分组的键。在分组之后,我们还可以使用Aggregate、…

    C# 2023年6月1日
    00
  • C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法

    C#中一般使用递归方式实现二叉树的遍历。常见的三种二叉树遍历方式是前序遍历、中序遍历和后序遍历。下面就详细介绍C#在实现这三种遍历方式时需要注意的问题和实现方法。 前序遍历 前序遍历是按照根节点、左子树、右子树的顺序遍历二叉树。例如给定二叉树如下: 1 / \ 2 3 前序遍历输出结果为:1 2 3 C#代码实现如下: public void PreOrde…

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