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

yizhihongxing

下面是完整攻略:

需求概述

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

  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日

相关文章

  • 在asp.NET中字符串替换的五种方法第1/2页

    让我来为您详细讲解“在asp.NET中字符串替换的五种方法第1/2页”的完整攻略。 标题格式 在ASP.NET中字符串替换的五种方法 第1/2页 文本格式 在ASP.NET中,字符串替换是一个常见的任务。下面介绍ASP.NET中实现字符串替换的五种方法: 使用Replace()方法 使用正则表达式 使用StringBuilder 使用StringBuffer…

    C# 2023年6月8日
    00
  • unity实现录音并保存本地

    下面我就来详细讲解如何在Unity中实现录音并保存本地。 1. 前置准备 在开始实现录音之前,我们需要导入一个Unity的插件——Microphone,这个插件可以让我们在Unity中调用系统的音频采集设备。具体的导入方法如下: 打开Unity,进入项目。 点击菜单栏的“Window”,在下拉菜单中点击“Package Manager”。 在Package …

    C# 2023年6月3日
    00
  • 在Parallel中使用DbSet.Add()发现的一系列多线程问题和解决思路详解

    在Parallel中使用DbSet.Add()发现的一系列多线程问题和解决思路详解 背景 当我们在使用Entity Framework的DbContext进行数据库操作时,我们经常需要调用DbSet的Add方法来添加新的实体,以便在保存更改之前将实体添加到数据库中。但是,在多线程环境下,使用Add方法可能会导致意外行为和错误,因此需要特别注意。 问题 当我们…

    C# 2023年5月15日
    00
  • 在 .NET MAUI 中加载 json 文件的方法

    以下是关于在.NET MAUI中加载JSON文件的方法的完整攻略: 1. 问题描述 在.NET MAUI应用程序中,我们需要加载JSON文件以便读取其中的数据。本攻略将介绍如何在.NET MAUI中加载JSON文件。 2. 解决方案 在.NET MAUI中,我们可以使用System.Text.Json命名空间中的JsonSerializer类来加载JSON文…

    C# 2023年5月12日
    00
  • C# 检索不区分大小写并高亮显示实例详解

    在C#中,我们可以使用正则表达式来实现检索不区分大小写并高亮显示的功能。以下是实现该功能的步骤: 步骤1:引入命名空间 using System.Text.RegularExpressions; 在上面的示例中,我们引入了System.Text.RegularExpressions命名空间,该命名空间包含了正则表达式相关的类和方法。 步骤2:编写检索代码 s…

    C# 2023年5月15日
    00
  • C#连接mysql的方法【基于vs2010】

    C#连接MySQL的方法【基于VS2010】 1. 准备工作 在使用C#连接MySQL之前,需要先完成一些准备工作: 确认已经安装了MySQL数据库,并且启动了MySQL服务。 确认已经安装了Visual Studio 2010开发环境。 确认已经安装了MySQL Connector/NET驱动程序。该驱动程序可以从MySQL官方网站下载得到。 2. 新建C…

    C# 2023年6月2日
    00
  • Unity向量按照某一点进行旋转

    当我们在开发Unity的3D游戏时,经常会遇到需要对物体进行旋转的情况。而有时候我们需要在围绕点旋转的同时保持物体不移动。这时候,就需要对向量进行旋转。以下是 Unity 向量按照某一点进行旋转 的完整攻略。 1. 旋转一个二维向量 首先,我们来看一个二维向量的例子。代码如下: public Vector2 RotateAround(Vector2 poin…

    C# 2023年6月3日
    00
  • WIN10企业版LTSC如何激活 win10企业版ltsc激活密钥(亲测有效)

    如何激活 WIN10企业版LTSC 什么是WIN10企业版LTSC Windows 10 Enterprise LTSC (Long-Term Servicing Channel) 是一款基于 Windows 10 的企业版操作系统,专为企业用户设计。与其他版本的Windows相比,它专为企业用户而设计,提供了更长的生命周期支持、更强的安全性和更好的兼容性等…

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