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

在C#中如何在不同窗体间导出导入变量?Environment.GetEnvironmentVariable是正确方法吗?

同应用内多窗体变量传递方案说明

Environment.GetEnvironmentVariable不是实现该需求的正确方法。该API的设计用途是读取操作系统或当前进程的环境变量,和同应用内不同窗体之间的变量共享完全无关,使用它实现该需求会出现作用域不可控、变量冲突、性能损耗等问题,完全不推荐。

推荐的正确实现方案

以下是C# WinForm场景下常用的跨窗体传值方案,可根据自己的使用场景选择:

  • 构造函数传参:适用于父窗体打开新子窗体时的单向传值。在子窗体自定义带参数的构造函数,父窗体实例化子窗体时直接传入需要共享的变量即可。
    示例代码:
    // 子窗体自定义构造函数
    public partial class ChildForm : Form
    {
        private int _passedCount;
        private string _passedMsg;
        
        public ChildForm(int count, string msg)
        {
            InitializeComponent();
            _passedCount = count;
            _passedMsg = msg;
        }
    }
    
    // 父窗体打开子窗体时传值
    var child = new ChildForm(10, "测试数据");
    child.Show();
    
  • 公共属性/方法传值:适用于双向传值,或窗体已打开后的动态传值。给目标窗体定义公共可访问的属性或赋值方法,通过窗体实例直接读写即可。
  • 静态类共享:适用于多窗体全局共享的变量。单独定义静态类存储公共变量,所有窗体都可以直接读写该类的静态属性。
    示例代码:
    // 定义全局共享类
    public static class GlobalVars
    {
        public static string UserName { get; set; }
        public static int UserId { get; set; }
    }
    
    // 任意窗体中读写
    GlobalVars.UserName = "张三";
    
  • 事件订阅传值:适用于源窗体变量变更后需要自动同步到目标窗体的场景。在源窗体定义自定义事件,目标窗体订阅该事件,事件触发时自动携带参数完成同步。

内容的提问来源于stack exchange,提问作者Irimia Nicolae

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:48:04