C#窗体间传值的两种实现方法

 更新时间:2025年10月30日 09:17:09   作者:Smooth_开水同学  
本文介绍了两种在C#中实现窗体间传值的方法,方法一中,子窗体Form4通过父窗体Form3的方法与父窗体通信,父窗体通过事件将数据传递给子窗体,方法二中,子窗体直接调用父窗体的方法,并传递数据,两种方法都实现了从父窗体向子窗体传递数据的功能,需要的朋友可以参考下

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

窗体三拖动两个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#窗体间传值的两种实现方法的文章就介绍到这了,更多相关C#窗体间传值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#程序员统计自己的代码行数

    C#程序员统计自己的代码行数

    这篇文章给大家讲解了下作为程序员如何统计自己写过的代码的行数,这个也是证明自己程序员能力的一个表现,一起来看下。
    2017-12-12
  • C#检查foreach判读是否为null的方法

    C#检查foreach判读是否为null的方法

    这篇文章主要介绍了C#如何检查foreach判读其是否为null,文中给出了示例代码,介绍的很详细,需要的朋友可以参考下方法
    2016-09-09
  • C#实现windows form限制文本框输入的方法

    C#实现windows form限制文本框输入的方法

    这篇文章主要介绍了C#实现windows form限制文本框输入的方法,涉及C#限制文本框输入的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C#中WinForm程序退出方法技巧总结

    C#中WinForm程序退出方法技巧总结

    这篇文章主要介绍了C#中WinForm程序退出方法,实例总结了技巧退出WinForm程序窗口的各种常用技巧,非常具有实用价值,需要的朋友可以参考下
    2014-12-12
  • 深入分析c# 封装和访问修饰符

    深入分析c# 封装和访问修饰符

    这篇文章主要介绍了c# 封装和访问修饰符的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • C#简单的特殊输出实例

    C#简单的特殊输出实例

    这篇文章主要介绍了C#简单的特殊输出,以实例实现了针对一些特殊字符与位置的输出控制,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-11-11
  • C# Winform下载文件并显示进度条的实现代码

    C# Winform下载文件并显示进度条的实现代码

    本来是要研究怎样判断下载完成,结果找到这个方法,可以在这个方法完成之后提示下载完成,需要的朋友可以参考下
    2014-07-07
  • c#同步两个子目录文件示例分享 两个文件夹同步

    c#同步两个子目录文件示例分享 两个文件夹同步

    这篇文章主要介绍了使用c#同步两个子目录文件的方法,大家参考使用吧
    2014-01-01
  • C#编译器对局部变量的优化指南

    C#编译器对局部变量的优化指南

    这篇文章主要给大家介绍了关于C#编译器对局部变量的优化指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • c# Thread类线程常用操作详解

    c# Thread类线程常用操作详解

    这篇文章主要介绍了c# Thread类线程常用操作详解的相关资料,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03

最新评论