C#子窗体获取父窗体TextBox框的值实现方式

 更新时间:2025年10月29日 08:48:48   作者:Smooth_开水同学  
文章描述了在C#中通过构造函数和公共属性两种方法实现窗体间传递数据的过程,父窗体通过按钮点击事件获取子窗体的文本框值,并通过构造函数或公共属性将值传递给子窗体,子窗体在加载时接收并处理传递的值,显示在文本框中

C#子窗体获取父窗体TextBox框的值

新建两个窗体,假设窗体三可以跳转到窗体四,即窗体三为父窗体,窗体四为子窗体。

窗体三拖动两个Label和TextBox,再拖动一个Button组件。

窗体四同理,但不需要Button组件。

组件拖动完之后,再写代码部分。

方法1

子窗体Form4:
public partial class Form4 : Form
    {
        // 【关键】定义带参数的构造函数,用于接收Form3传递的值
        public Form4(string form3Text)  // 参数名可自定义,如form3Text
        {
            InitializeComponent();  // 必须保留,窗体初始化用
            // 将Form3传递的值赋值给Form4的TextBox
            textBox1.Text = form3Text;  // 假设Form4的TextBox名为textBox1
        }
        public Form4()
        {
            InitializeComponent();
        }
    }
父窗体Form3:
private void button1_Click(object sender, EventArgs e)
        {
            // 获取Form3中TextBox的值(假设Form3的TextBox名为textBox1)
            string valueFromForm3 = textBox1.Text;

            // 创建Form4实例,通过构造函数传递值
            Form4 form4 = new Form4(valueFromForm3);  // 这里的参数就是Form4构造函数的form3Text

            // 显示Form4
            form4.Show();  // 或 form4.ShowDialog();
        }

方法2

子窗体Form4:

public partial class Form4 : Form
    {
        // 1. 确保属性是public(关键,否则Form3无法访问)
        public string Form3Value { get; set; }

        public Form4()
        {
            InitializeComponent();

            // 【可选】手动绑定Load事件(若设计器没自动绑定)
            this.Load += new EventHandler(Form4_Load);
        }

        // 2. 在Form4加载时赋值(时机关键:必须在Form4显示前完成)
        private void Form4_Load(object sender, EventArgs e)
        {
            // 给textBox1赋值,同时处理空值(避免显示空白)
            textBox1.Text = Form3Value ?? "未接收到数据"; 
        }
    }
}
父窗体Form3:

private void button1_Click(object sender, EventArgs e)
{
    // 1. 先验证Form3的textBox1有值(避免传空)
    if (string.IsNullOrEmpty(textBox1.Text))
    {
        MessageBox.Show("Form3的textBox1请先输入数字!");
        return;
    }

    // 2. 创建Form4实例,传递值
    Form4 form4 = new Form4();
    form4.Form3Value = textBox1.Text;  // 确保这里传的是Form3的textBox1值

    // 3. 显示Form4(用Show或ShowDialog都可以)
    form4.Show();  // 不要用Hide()!确保Form4正常显示
}

上述只是实现一个传值,两个传值同理。

结果

结束

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • C#的WEBBROWSER与JS交互小结

    C#的WEBBROWSER与JS交互小结

    这篇文章主要介绍了C#的WEBBROWSER与JS交互方法,详细讲述了与页面标签的交互以及数据交互的方法,需要的朋友可以参考下
    2014-11-11
  • vscode编写latex的方法

    vscode编写latex的方法

    这篇文章主要介绍了vscode编写latex的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • C# 系统热键注册实现代码

    C# 系统热键注册实现代码

    简单点说就是为程序制定快捷键勒。。很多软件都带热键功能的,通过以下方式可以实现2个键或3个键的快捷键,相当之使用,具体实现方法看后文吧。
    2009-02-02
  • 详细聊聊C#的并发机制优秀在哪

    详细聊聊C#的并发机制优秀在哪

    并发其实是一个很泛的概念,字面意思就是"同时做多件事",不过方式有所不同,下面这篇文章主要给大家介绍了关于C#并发机制的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • 在C#中使用Channels的完整教程

    在C#中使用Channels的完整教程

    这篇文章主要介绍了在C#中使用Channels的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python设计模式编程中的备忘录模式与对象池模式示例

    Python设计模式编程中的备忘录模式与对象池模式示例

    这篇文章主要介绍了Python设计模式编程中的备忘录模式与对象池模式,文中分别举了表单和线程的相关示例,需要的朋友可以参考下
    2016-02-02
  • c# Selenium爬取数据时防止webdriver封爬虫的方法

    c# Selenium爬取数据时防止webdriver封爬虫的方法

    这篇文章主要介绍了c# Selenium爬取数据时防止webdriver封爬虫的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2021-01-01
  • C#异步编程由浅入深(二)之Async/Await的使用

    C#异步编程由浅入深(二)之Async/Await的使用

    这篇文章主要介绍了C#异步编程由浅入深(二)之Async/Await的作用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • C#读取文件所有行到数组的方法

    C#读取文件所有行到数组的方法

    这篇文章主要介绍了C#读取文件所有行到数组的方法,涉及C#针对文件及数组的相关操作技巧,需要的朋友可以参考下
    2015-07-07
  • C#实现窗体与子线程的交互的方法

    C#实现窗体与子线程的交互的方法

    这篇文章主要介绍了C#实现窗体与子线程的交互的方法,对初学者有一定的学习借鉴价值,需要的朋友可以参考下
    2014-08-08

最新评论