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日

相关文章

  • .Net Core和RabbitMQ限制循环消费的方法

    以下是使用.NET Core和RabbitMQ限制循环消费的方法的完整攻略: 1. 什么是RabbitMQ RabbitMQ是一个开源的消息代理,它实现了高级消息列协议(QP)标准。RabbitMQ可以用于构建分布式系统,它可以处理大量的消息,并确保消息的可靠传。 2. 什么是循环消费 循环消费是指在消息队列中,消费者不断地消费同一条,直到被确认为已处理。循…

    C# 2023年5月12日
    00
  • C#字符串和Acsii码相互转换

    C#字符串和ASCII码的相互转换需要使用到System.Text.Encoding类中的ASCII编码器和解码器。下面是详细的操作步骤: 将字符串转换为ASCII码 步骤: 引入命名空间System.Text。 调用Encoding.ASCII.GetBytes()方法,将字符串转换为ASCII码字节数组。 代码示例: using System.Text;…

    C# 2023年6月8日
    00
  • WPF+ASP.NET SignalR实现后台通知功能的示例代码

    搭建WPF+ASP.NET SignalR环境 首先需要配置好WPF和ASP.NET SignalR的环境。 WPF可以使用Visual Studio自带的WPF应用程序模板创建,而ASP.NET SignalR则需要在Visual Studio中额外进行安装和配置。安装方法可以参考官方文档,也可以在NuGet中搜索 Microsoft.AspNet.Sig…

    C# 2023年5月31日
    00
  • C# 无需COM组件创建快捷方式的实现代码

    下面我将详细讲解如何使用C#来实现无需COM组件创建快捷方式的实现代码。 什么是COM组件 COM(Component Object Model)组件是一种通用的二进制接口标准,允许不同语言和平台之间的软件互操作。创建快捷方式的COM组件一般为Windows Script Host。 使用C#实现快捷方式 在C#中,我们可以使用Shell对象来访问Windo…

    C# 2023年6月7日
    00
  • C#使用Socket快速判断数据库连接是否正常的方法

    以下是C#使用Socket快速判断数据库连接是否正常的方法的详细攻略。 为什么需要使用Socket来判断数据库连接是否正常 在开发应用程序时,我们通常需要将数据库与应用程序进行连接,以提供数据的读写操作。但是,有时候我们需要判断数据库连接是否正常,以避免在后期出现一些问题。而使用Socket来判断数据库连接是否正常,则可以在较短的时间内,得出结论,并提供更好…

    C# 2023年6月2日
    00
  • C#获取CPU处理器核心数量的方法

    获取CPU处理器核心数量是一项常见的系统信息查询任务,本文将详细讲解C#获取CPU处理器核心数量的方法。 1. .NET Framework中获取CPU核心数量的方法 .NET Framework提供了一个名为Environment的类,可以使用该类的ProcessorCount属性轻松地获取CPU核心数量。 int coreCount = Environm…

    C# 2023年6月2日
    00
  • 分析C# Dictionary的实现原理

    分析C# Dictionary的实现原理 前言 C#中的Dictionary是一种常见的数据结构,它能够高效地存储Key-Value形式的数据。在我们使用它的时候,也需要了解其内部实现原理。 实现原理 C#中的Dictionary内部实现是采用哈希表来存储数据的。哈希表是一种非常重要的数据结构,它可以通过哈希函数将Key转换成哈希码,然后将哈希码映射到一个固…

    C# 2023年5月15日
    00
  • C#委托与事件原理及实例解析

    C#委托与事件原理及实例解析 委托 委托是一种类型,它可以用来表示对一个或多个方法的引用。在计算机中,委托的本质就是一个类,它可以包含方法的引用或者函数指针,并允许在运行时将方法指定给委托,以便在需要时调用该方法。 委托的定义 使用 delegate 关键字来声明一个委托类型,例如: public delegate void MyDelegate(strin…

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