C# 在窗体之间传递值

C# 在窗体之间传递值,c#,winforms,session,data-transfer,C#,Winforms,Session,Data Transfer,正如您所知,我们在WinForm中没有会话。在我的项目中,我有几个表单(客户、服务、运营商……),我从运营商那里获取一些值(运营商名称、运营商姓氏和配置文件图片地址)。我希望在运行时将这些值存储在某个地方,并且无论何时需要它,我都可以从存储它的位置获取它 有没有一个简单的方法可以做到这一点?我想这是一个长期的web开发人员说的话。我听到了,我的朋友。我去过那里 web编程的会话对象只是解决无状态环境中保存状态问题的一种解决方法。另一方面,winforms编程没有这个问题。应用程序中的对象都保留其

正如您所知,我们在WinForm中没有会话。在我的项目中,我有几个表单(客户、服务、运营商……),我从运营商那里获取一些值(运营商名称、运营商姓氏和配置文件图片地址)。我希望在运行时将这些值存储在某个地方,并且无论何时需要它,我都可以从存储它的位置获取它


有没有一个简单的方法可以做到这一点?

我想这是一个长期的web开发人员说的话。我听到了,我的朋友。我去过那里

web编程的会话对象只是解决无状态环境中保存状态问题的一种解决方法。另一方面,winforms编程没有这个问题。应用程序中的对象都保留其状态信息

关于将信息从一种形式传递到另一种形式:

  • 您可以在接收表单构造函数上定义要传递的参数 参数。然后在接收表单中定义局部变量以保存对这些对象的引用
  • 您可以在接收表单上将单独的方法设置为 发送参数并从发件人窗体调用它
  • 您可以在发件人上公开信息 表格(或其他地方),并在您 我需要它

  • 哪一个最好?完全取决于您的业务案例和应用程序逻辑。

    我认为最简单的方法是创建一个
    类,可以从包含所需数据的表单中访问该类

    示例

    // Class1.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace myNameSpace
    {
        class Class1
        {
            public static string Name = "";
            public static string LastName = "";
            public static string ProfilePictureaddress = "";
        }
    }
    
    使用此选项,无论何时您想要存储或检索数据,都可以使用
    myNameSpace.Class1
    。例如,如果要存储到
    Name
    ,可以使用
    myNameSpace.Class1.Name=“value”。这将把
    Name
    设置为
    value

    谢谢,

    节日快乐!:)

    您还可以像这样使用项目属性:

    //写

    Properties.Setting.Default[“key”]=值

    Properties.Setting.Default.Save()

    //阅读

    value=Properties.Setting.Default[“key”]