C#实现winform用子窗体刷新父窗体及子窗体改变父窗体控件值的方法

下面是完整攻略:

需求概述

我们需要实现以下两个需求:

  1. 在一个WinForm窗体中添加一个子窗体,并在子窗体中点击按钮刷新父窗体。
  2. 在子窗体中修改某个控件的值,使得父窗体中相应的控件的值也随之改变。

实现方法

刷新父窗体

为了方便演示,我们在父窗体中添加一个文本框和一个按钮,点击按钮会打开一个子窗体,子窗体中有一个按钮,用于刷新父窗体中的文本框。

  1. 在父窗体中添加一个文本框和一个按钮,将按钮点击事件绑定以下方法:
private void button1_Click(object sender, EventArgs e)
{
    ChildForm childForm = new ChildForm(this);
    childForm.Show();
}

此时需要在项目中添加一个子窗体(即ChildForm)。

  1. 在子窗体的构造方法中保存父窗体的引用:
public partial class ChildForm : Form
{
    private MainForm _mainForm;

    public ChildForm(MainForm mainForm)
    {
        InitializeComponent();
        _mainForm = mainForm;
    }
}
  1. 在子窗体的按钮点击事件中,通过父窗体的引用修改父窗体中文本框的值:
private void button1_Click(object sender, EventArgs e)
{
    _mainForm.textBox1.Text = "Hello, Parent Form!";
}

修改父窗体控件值

为了方便演示,我们在父窗体中添加一个文本框和一个按钮,点击按钮会打开一个子窗体,子窗体中有一个文本框,用于修改父窗体中的文本框的值。

  1. 在父窗体中添加一个文本框和一个按钮,将按钮点击事件绑定以下方法:
private void button1_Click(object sender, EventArgs e)
{
    ChildForm childForm = new ChildForm(this);
    childForm.ShowDialog();
}
  1. 在子窗体中添加一个文本框和一个按钮,将按钮的点击事件绑定以下方法:
private void button1_Click(object sender, EventArgs e)
{
    _mainForm.textBox1.Text = textBox1.Text;
}
  1. 在子窗体的构造方法中保存父窗体的引用:
public partial class ChildForm : Form
{
    private MainForm _mainForm;

    public ChildForm(MainForm mainForm)
    {
        InitializeComponent();
        _mainForm = mainForm;
    }
}

示例演示

我们尝试按照上述方法实现一个简单的应用来演示。在父窗体中添加一个文本框(Name)和一个按钮(Open Child Form),点击按钮会打开一个子窗体,子窗体中有一个文本框(New Name)和两个按钮(Change Name和Refresh Parent Form)。

刷新父窗体

在父窗体中添加以下代码:

private void button1_Click(object sender, EventArgs e)
{
    ChildForm childForm = new ChildForm(this);
    childForm.Show();
}

public string NameText
{
    get { return textBox1.Text; }
    set { textBox1.Text = value; }
}

在子窗体中添加以下代码:

public partial class ChildForm : Form
{
    private MainForm _mainForm;

    public ChildForm(MainForm mainForm)
    {
        InitializeComponent();
        _mainForm = mainForm;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        _mainForm.NameText = "Hello, Parent Form!";
    }
}

在子窗体中点击“Refresh Parent Form”按钮,即可看到父窗体的文本框显示了新的内容。

修改父窗体控件值

在父窗体中添加以下代码:

private void button1_Click(object sender, EventArgs e)
{
    ChildForm childForm = new ChildForm(this);
    childForm.ShowDialog();
}

public string NameText
{
    get { return textBox1.Text; }
    set { textBox1.Text = value; }
}

在子窗体中添加以下代码:

public partial class ChildForm : Form
{
    private MainForm _mainForm;

    public ChildForm(MainForm mainForm)
    {
        InitializeComponent();
        _mainForm = mainForm;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        _mainForm.NameText = textBox1.Text;
    }
}

在子窗体中修改文本框的值,点击“Change Name”按钮,即可看到父窗体的文本框显示了新的内容。

以上就是关于“C#实现winform用子窗体刷新父窗体及子窗体改变父窗体控件值的方法”的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现winform用子窗体刷新父窗体及子窗体改变父窗体控件值的方法 - Python技术站

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

相关文章

  • C#中参数数组、引用参数和输出参数示例详解

    C#中参数数组、引用参数和输出参数示例详解 在C#中,函数的参数既可以是值类型,也可以是引用类型。同时C#还提供了参数数组、引用参数和输出参数以满足不同的需求。 参数数组 在函数定义时,可以定义参数数组,这样在调用该函数时可以传递不确定数量的参数,下面是一个示例: public static int Sum(params int[] numbers) { i…

    C# 2023年6月7日
    00
  • 浅谈ASP.NET Core中间件实现分布式 Session

    浅谈ASP.NET Core中间件实现分布式 Session攻略 在ASP.NET Core中,Session是一种用于存储用户数据的机制。在本攻略中,我们将讨论如何使用ASP.NET Core中间件Middleware实现分布式Session,并提供两个示例说明。 分布式Session的工作原理 在ASP.NET Core中,Session是一种用于存储用…

    C# 2023年5月17日
    00
  • 在.NET程序崩溃时自动创建Dump的思路详解

    以下是关于在.NET程序崩溃时自动创建Dump的思路详解: 1. 问题描述 在.NET程序运行过程中,可能会遇到各问题,例如崩溃、死锁、内存泄漏等。为了更好地诊断和解决这些问题我们需要在程序崩溃时自创建Dump文件。本攻略将介绍如何实现在.NET程序崩溃时自动创建Dump文件。 2. 解决方案 在.NET程序中,我们使用Microsoft.Diagnosti…

    C# 2023年5月12日
    00
  • c#中GetType()与Typeof()的区别

    C#中GetType()与Typeof()的区别 在C#中,GetType()和Typeof()都是C#中检索类型信息的两个重要方法。本文将详细讲解这两个方法的区别。 GetType() GetType()方法是用于确定当前对象的运行时类型的方法,返回的是实例对象的类型。由于C#是强类型语言,每个变量、属性或方法在编译时都必须指定明确的类型,当程序运行时变量…

    C# 2023年6月7日
    00
  • asp.net C#生成和解析二维码的实例代码

    生成和解析二维码是现代开发中常见的需求,下面将介绍使用ASP.NET C#语言生成和解析二维码的实例代码。 生成二维码 使用C#语言生成二维码的方法有很多,我这里将介绍一种最常用的方法,即使用QRCoder库生成二维码。 安装QRCoder库 首先需要安装QRCoder库,在Visual Studio中打开项目,选择“工具”-“NuGet包管理器”-“程序包…

    C# 2023年5月31日
    00
  • C#中foreach语句使用break暂停遍历的方法

    当我们使用 foreach 遍历一个集合时,可能有时候需要在集合中某些条件满足时暂停遍历,这时我们可以使用关键字 break 来实现。下面我们来介绍一下 C# 中 foreach 语句使用 break 暂停遍历的方法。 1. 使用 break 暂停遍历 在 foreach 循环中使用 break 关键字可以在满足某些条件时停止循环,即跳出循环。 例如,我们需…

    C# 2023年6月7日
    00
  • C#中fixed关键字的作用总结

    下面是详细讲解”C#中fixed关键字的作用总结”的攻略。 什么是fixed? Fixed是一个C#中的关键字,它和指针密切相关。通常用于控制指针的生命周期,避免指针操作引起内存泄露的问题。它在使用指针访问不安全的内存时非常有用。 fixed的作用 限制指针的生命周期 当我们使用指针访问内存的时候,如果不加任何限制,指针操作会导致内存泄露,而fixed关键字…

    C# 2023年6月3日
    00
  • C# FileSystemWatcher 在监控文件夹和文件时的使用方法

    C#中的FileSystemWatcher类可以用于监控文件夹和文件的变化,例如创建、修改、删除等操作。本文将提供使用FileSystemWatcher类的完整攻略,包括创建FileSystemWatcher对象、设置监控选项、处理事件、示例等。 创建FileSystemWatcher对象 要使用FileSystemWatcher类,需要创建一个FileSy…

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