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日

相关文章

  • .Net多进程通信共享内存映射文件Memory Mapped

    .Net多进程通信共享内存映射文件Memory Mapped的攻略 什么是Memory Mapped文件 Memory Mapped文件是一种通信机制,可以在多个进程之间共享数据,同时不需要进行大规模的内存拷贝,这个机制的核心是共享内存映射文件。 在Windows系统中,每个进程都有自己独立的虚拟内存空间,不同进程之间的虚拟内存空间是隔离的。但实际上,操作系…

    C# 2023年6月3日
    00
  • PHP与C#分别格式化文件大小的代码

    下面是关于“PHP与C#分别格式化文件大小的代码”攻略的详细讲解。 前言 在许多Web应用程序和桌面应用程序中,需要以易于理解的方式显示或打印文件大小。例如,使用者可能想知道一个文件夹中的所有文件的总大小,或将文件大小显示为“MB”或“GB”等单位而不是字节。 在本攻略中,我们将展示如何在PHP和C#中格式化文件大小的代码。 PHP 在PHP中,我们可以使用…

    C# 2023年6月1日
    00
  • C#装箱和拆箱的原理介绍

    了解 C# 的装箱和拆箱是编程中的基本知识之一。本文将介绍什么是装箱和拆箱,它们在 C# 中的用途以及它们的原理。 什么是装箱和拆箱 装箱和拆箱 (boxing and unboxing) 是 .NET 框架中的一个重要概念。它用于将值类型 (value type) 转换成引用类型 (reference type),或将引用类型转换成值类型。在 C# 编程中…

    C# 2023年6月7日
    00
  • C#多线程之线程控制详解

    C#多线程之线程控制详解 在C#中,多线程技术通常用于对计算密集型和I/O密集型任务进行并发处理,以提高程序的性能和响应时间。C#提供了一系列的线程控制相关的基础类和方法,开发者可以通过这些类和方法灵活地控制线程的创建、启动、暂停、终止等行为。本文将详细讲解C#多线程之线程控制的相关知识点,包括线程同步、线程池、任务取消等内容。 线程同步 在多线程并发场景下…

    C# 2023年6月6日
    00
  • 使用typescript改造koa开发框架的实现

    使用Typescript改造Koa开发框架的实现可以带来更好的可维护性和可读性。下面是一些完整的攻略: 步骤一:安装依赖 全局安装TypeScript npm install -g typescript 安装所需的依赖 npm install –save-dev @types/koa @types/node koa koa-router typescrip…

    C# 2023年6月3日
    00
  • 浅析.net core 抛异常对性能影响

    浅析 .NET Core 抛异常对性能影响 在 .NET Core 中,抛出异常是一种常见的错误处理方式。然而,抛出异常会对性能产生一定的影响。本攻略将浅析 .NET Core 抛异常对性能的影响,并提供多个示例说明。 抛异常对性能的影响 抛出异常会对性能产生一定的影响,主要表现在以下几个方面: CPU 时间:抛出异常会消耗一定的 CPU 时间,这会影响应用…

    C# 2023年5月17日
    00
  • C#中LINQ多条件JOIN时为什么可以使用匿名类

    在C#中,如果要进行多条件JOIN,则可以使用匿名类型。这是因为多条件JOIN涉及到多个表或者是同一个表的多个字段,需要指定具体的条件。而匿名类型可以方便地创建一个临时的类型,其中可以包含多个字段,从而满足多条件JOIN的需求。 具体实现步骤: 1.创建匿名类型 在C#中,可以使用var关键字创建匿名类型,var类型会在编译时自动推断出匿名类型的具体类型信息…

    C# 2023年6月1日
    00
  • ASP.NET Core 数据保护(Data Protection)上篇

    ASP.NET Core 数据保护(Data Protection)是一种用于保护数据的框架,它提供了一种简单的方法来加密和解密数据。本攻略将深入探讨ASP.NET Core 数据保护的实现,并提供两个示例说明。 1. 数据保护的基本原理 ASP.NET Core 数据保护的基本原理是使用密钥来加密和解密数据。密钥可以是对称密钥或非对称密钥。对称密钥是一种加…

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