C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C#子窗体获取父窗体TextBox框值

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

作者: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正常显示
}

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

结果

结束

总结

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

您可能感兴趣的文章:
阅读全文