You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#跨窗体传值:打开第二个窗体时如何即时显示传递的ID?

解决WinForms窗体间ID传递并即时显示的问题

你遇到的核心问题是赋值时机不匹配:你在实例化Main_Menu_Form之后才给selectedid赋值,但窗体的构造函数已经执行完毕——构造函数里把selectedid赋值给TextBox的代码早已经跑完,自然拿不到你后来设置的ID值。

下面给你几个简单可行的解决方案,按需选择即可:

方案1:修改构造函数,直接传入ID

这是最直接的方式,在创建Main_Menu_Form实例时就把ID传进去,构造函数里直接更新TextBox:

public partial class Main_Menu_Form : Form
{
    public Main_Menu_Form(int selectedId)
    {
        InitializeComponent();
        // 构造时直接把ID赋值给TextBox
        textBox1.Text = selectedId.ToString();
    }
}

First_Form 调用代码:

private void test()
{
    // 实例化时直接传入目标ID
    var mainMenuForm = new Main_Menu_Form(你的ID值);
    mainMenuForm.Show();
}

方案2:给selectedid添加属性,赋值时自动更新TextBox

如果不想修改构造函数,可以把selectedid改成属性,在set方法里同步更新TextBox:

public partial class Main_Menu_Form : Form
{
    private int _selectedid;
    public int selectedid
    {
        get => _selectedid;
        set
        {
            _selectedid = value;
            // 确保控件已初始化,避免空引用异常
            if (textBox1 != null)
            {
                textBox1.Text = value.ToString();
            }
        }
    }

    public Main_Menu_Form()
    {
        InitializeComponent();
    }
}

First_Form 调用代码(和你原来的写法一致即可):

private void test()
{
    var mainMenuForm = new Main_Menu_Form();
    mainMenuForm.selectedid = 你的ID值;
    mainMenuForm.Show();
}

方案3:新增专门的方法来设置ID

另一种思路是给Main_Menu_Form加一个公开方法,专门用来设置ID并更新TextBox:

public partial class Main_Menu_Form : Form
{
    public Main_Menu_Form()
    {
        InitializeComponent();
    }

    public void SetSelectedId(int id)
    {
        textBox1.Text = id.ToString();
    }
}

First_Form 调用代码:

private void test()
{
    var mainMenuForm = new Main_Menu_Form();
    mainMenuForm.SetSelectedId(你的ID值);
    mainMenuForm.Show();
}

这三种方案本质都是确保ID赋值后,TextBox的更新代码能被执行到,而不是只在构造函数里跑一次。选哪种取决于你的代码结构偏好~

内容的提问来源于stack exchange,提问作者Jaddy Boy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:36:32