C#简单实现子窗体向父窗体传值的方法

C# 简单实现子窗体向父窗体传值有多种方法,下面介绍两种常用的方法。

方法一:使用属性

  1. 在子窗体中定义一个属性,用于存储需要传递的值。
public partial class ChildForm : Form
{
    private string _value;
    public string Value
    {
        get { return _value; }
        set { _value = value; }
    }

    // ...
}
  1. 在父窗体中打开子窗体,并设置子窗体的属性值。
private void btnOpenChildForm_Click(object sender, EventArgs e)
{
    ChildForm childForm = new ChildForm();
    childForm.Value = "Hello, World!";
    childForm.ShowDialog();
}
  1. 在子窗体的关闭事件中,将属性值传回给父窗体。
private void btnClose_Click(object sender, EventArgs e)
{
    this.DialogResult = DialogResult.OK;
}

private void ChildForm_FormClosing(object sender, FormClosingEventArgs e)
{
    if (this.DialogResult == DialogResult.OK)
    {
        ParentForm parentForm = (ParentForm)this.Owner;
        parentForm.SetTextBoxValue(this.Value);
    }
}
  1. 在父窗体中定义一个方法,用于接收子窗体传回的值。
public void SetTextBoxValue(string value)
{
    textBox1.Text = value;
}

方法二:使用事件

  1. 在子窗体中定义一个事件,并在需要传值的地方触发该事件。
public partial class ChildForm : Form
{
    public delegate void ValueChangedEventHandler(object sender, ValueChangedEventArgs e);
    public event ValueChangedEventHandler ValueChanged;

    private void btnOk_Click(object sender, EventArgs e)
    {
        ValueChangedEventArgs args = new ValueChangedEventArgs();
        args.Value = "Hello, World!";
        ValueChanged?.Invoke(this, args);
        this.Close();
    }
}

public class ValueChangedEventArgs : EventArgs
{
    public string Value { get; set; }
}
  1. 在父窗体中打开子窗体,并订阅子窗体的 ValueChanged 事件。
private void btnOpenChildForm_Click(object sender, EventArgs e)
{
    ChildForm childForm = new ChildForm();
    childForm.ValueChanged += ChildForm_ValueChanged;
    childForm.ShowDialog();
}

private void ChildForm_ValueChanged(object sender, ValueChangedEventArgs e)
{
    textBox1.Text = e.Value;
}

以上两种方式都可以实现子窗体向父窗体传值,根据具体情况选择适合的方式即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#简单实现子窗体向父窗体传值的方法 - Python技术站

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

相关文章

  • C#职责链模式实例详解

    C#职责链模式实例详解 什么是职责链模式 职责链模式是一种行为型设计模式,它允许您将请求沿着处理链进行传递,直到它被处理为止。职责链模式由以下角色组成: 抽象处理程序:定义用于处理请求的通用接口,并保存指向其后继者的引用。 具体处理程序:处理它所能处理的请求,可以访问其后继者,并向后继者委派无法处理的请求。 客户端:将请求发送到处理程序以处理它。 具体的职责…

    C# 2023年6月1日
    00
  • C#实现String类型和json之间的相互转换功能示例

    C#实现String类型和JSON之间的相互转换功能示例 1. 前言 在现代Web开发中,常常需要将服务器数据以JSON(JavaScript Object Notation)格式传输到客户端,或者将客户端数据以JSON格式上传到服务器。同时,C#作为一门强类型的编程语言,当我们需要将JSON格式的字符串转换为C#的String类型或者反之,就需要使用到相互…

    C# 2023年5月31日
    00
  • c#关于非托管内存的释放问题及解读

    C# 关于非托管内存的释放问题及解读 背景介绍 在 C# 中,我们通常使用垃圾回收机制来释放托管内存,但是当我们需要使用非托管资源时,需要我们自己手动管理非托管内存的释放。如果我们没有适当地释放非托管资源,可能会引起内存泄漏的问题,导致程序性能下降,甚至是崩溃。 下面详细介绍如何在 C# 中缓解这一问题。 释放非托管内存 1. 常见的非托管内存 C# 中常用…

    C# 2023年5月15日
    00
  • ASP.NET Core MVC中Required与BindRequired用法与区别介绍

    在ASP.NET Core MVC中,Required和BindRequired都是用于验证模型绑定的属性是否为必填项的特性。本攻略将深入探讨Required和BindRequired的用法和区别,并提供两个示例说明。 Required特性 Required特性用于验证模型绑定的属性是否为必填项。如果属性为空,则模型验证将失败。以下是一个示例: public…

    C# 2023年5月17日
    00
  • asp.net C#实现解压缩文件的方法

    实现解压缩文件的方法可以使用C#中的System.IO.Compression命名空间中的ZipFile类。我们可以使用ZipFile类中提供的方法对zip文件进行解压缩。下面是详细的步骤: 步骤一:导入命名空间 使用前需要导入System.IO.Compression命名空间,使用以下代码: using System.IO.Compression; 步骤二…

    C# 2023年6月1日
    00
  • c# for循环中创建线程执行问题

    创建线程是C#中一种常见且重要的操作,而在循环中创建线程又是一种比较常见的需求。本文将就“C#中循环中创建线程执行问题”给出具体的攻略。 1. 为什么要在循环中创建线程 在一些情况下,我们有需要对一堆数据进行处理,每个数据的处理方式是一样的。那么我们就可以使用循环来实现遍历,把每个数据都处理一遍。这样做有时候会比单个单个处理要更方便和高效。 然而,这些任务可…

    C# 2023年5月15日
    00
  • C#中动态显示当前系统时间的实例方法

    下面我将为您详细讲解在C#中动态显示当前系统时间的实例方法的完整攻略。 步骤1:创建新的控制台应用程序 在Visual Studio中创建新的控制台应用程序,命名为“DynamicTime”。 步骤2:添加必要的命名空间 为了使用C#中的DateTime类,我们需要在程序中添加System命名空间。 using System; 步骤3:创建主方法 在Main…

    C# 2023年6月1日
    00
  • C#访问及调用类中私有成员与方法示例代码

    很好,下面我来详细讲解“C#访问及调用类中私有成员与方法示例代码”的完整攻略。 什么是C#中的私有成员 在C#面向对象的编程语言中,类是一个重要的概念,一个类中可能包含多个不同类型的成员,包括字段、属性、方法等。其中,私有成员是指仅限于本类中访问和调用的成员,其他类或代码无法直接访问或调用这些私有成员。 如何访问C#中的私有成员 在C#中,可以通过反射机制来…

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