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# 成员类型访问权限低于字段本身的”实现”指的是,当定义了一个类的私有字段时,如果你使用更低访问级别的成员类型如Property或Method来访问该字段,则可以在该类之外访问到该字段。这种实现方式可以使我们更加灵活地使用类的成员,并增加代码的可读性和可维护性。 下面是具体的实现攻略: 定义私有字段 首先,在类中定义一个私有字段,使用 private 访…

    C# 2023年6月6日
    00
  • 协定需要会话,但是绑定“BasicHttpBinding”不支持它或者因配置不正确而无法支持它

    “协定需要会话,但是绑定“BasicHttpBinding”不支持它或者因配置不正确而无法支持它”的解决方法 在使用WCF服务时,有时会遇到“协定需要会话,但是绑定“BasicHttpBinding”不支持它或者因配置不正确而无法支持它”的错误。这个错误通常是由于绑定配置不正确或未启用会话支持导致的。在本文中,我们将提供一些解决方案来解决这个问题,并提供两个…

    C# 2023年5月15日
    00
  • 关于C#调用C++dll传指针释放内存问题

    C# 调用 C++ DLL 传递指针并释放内存,需要注意以下事项: 1.确保 C++ DLL 使用标准的导出和导入约定,以免在调用时出现问题。 2.在 C++ DLL 中,应声明一个专用于释放内存的函数。 3.在 C# 中,需要使用 Marshaling 手动管理内存。 以下是一些实践指南: 声明函数接口 需要在 C# 中与 C++ DLL 中的函数的名称、…

    C# 2023年5月15日
    00
  • C#运算符之与,或,异或及移位运算小结

    让我们来详细讲解一下C#中的逻辑运算符、位运算符及移位运算符。 逻辑运算符 与运算符(&&) 与运算符用于连接两个逻辑表达式并在两个表达式均为true时返回true。与运算符可以被用于任何基本的数据类型,例如bool、int等。 int a = 3; int b = 5; if (a < b && b % 2 == 1)…

    C# 2023年6月8日
    00
  • Asp.net Core MVC中怎么把二级域名绑定到特定的控制器上

    Asp.net Core MVC中如何把二级域名绑定到特定的控制器上 在 Asp.net Core MVC 中,可以通过配置路由来将二级域名绑定到特定的控制器上。本攻略将介绍如何实现这一功能。 步骤 步骤1:创建一个新的 Asp.net Core MVC 项目 首先,我们需要创建一个新的 Asp.net Core MVC 项目。可以使用以下命令在命令行中创建…

    C# 2023年5月17日
    00
  • C#贪吃蛇游戏实现分析

    C#贪吃蛇游戏实现分析 简介 贪吃蛇是一种经典的游戏,它简单而有趣,很适合拿来练习编程的基础功底。这篇文章主要介绍如何用C#来实现一个贪吃蛇游戏。 实现思路 数据结构 贪吃蛇游戏中的核心数据结构是“蛇”。一条蛇由若干个“节点”组成,每个节点表示蛇身的一部分。为了表示一个蛇,我们可以使用一个“链表”来存储这些节点。 除此之外,还需要记录蛇的方向、蛇的长度以及食…

    C# 2023年6月6日
    00
  • 如何使用C#代码创建快捷方式文件详解

    下面是关于如何使用C#代码创建快捷方式文件的完整攻略: 准备工作 在使用C#代码创建快捷方式文件之前,首先需要引入Interop.Shell32.dll和Interop.IWshRuntimeLibrary.dll两个参考,并在代码中引用它们: using IWshRuntimeLibrary; using Shortcut = IWshRuntimeLib…

    C# 2023年5月31日
    00
  • c# 遍历获取所有文件的示例代码

    针对“c# 遍历获取所有文件的示例代码”的完整攻略,我将通过以下几个步骤详细说明。 1. 确定遍历目标 在编写代码之前,需要先明确需要遍历的目标文件夹。可以通过以下方式获取目标文件夹路径,此处以桌面为例: string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desk…

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