首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在类和窗体之间传递数据的最佳方法?

在类和窗体之间传递数据的最佳方法?
EN

Stack Overflow用户
提问于 2014-04-08 19:52:21
回答 3查看 122关注 0票数 0

以下是我正在从事的项目的一些背景信息:

我正在创建一个用于收集光谱信息的光谱收集服务MDI应用程序。在我的主表单中,我有一个硬件控件类,它负责编排和控制一个PLC控制类和一个光谱收集类。在光谱收集和plc类中分别运行和持续收集有关分光计和plc的信息。

此外,我正在制作应用程序,以便用户可以打开新的子窗体并查看有关系统的所有信息。我试图找出一种方法,使这个系统的信息可以从子表单中看到,因为它们正在不断更新。

我有一些使用线程、计时器和/或事件的想法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-09 03:30:22

到目前为止,以下是在类之间传递信息的最简单方法。

代码语言:javascript
复制
#region Variables

private static bool bTest = false;

#endregion

#region Functions

public static bool getbTest()
{
    return bTest;
}

public static void setbTest(bool b)
{
    bTest = b;
}

#endregion
票数 0
EN

Stack Overflow用户

发布于 2014-04-08 19:55:48

使用Progress类根据某些后台操作的进度更新UI。UI可以创建对象,定义它计划如何使用数据更新UI,然后将其传递给非UI操作,后者可以提供数据,而不需要知道UI将如何更新。

如果您使用的是较早版本的.NET,则可以使用以下类似的实现:

代码语言:javascript
复制
public interface IProgress<T>
{
    void Report(T data);
}

public class Progress<T> : IProgress<T>
{
    SynchronizationContext context;
    public Progress()
    {
        context = SynchronizationContext.Current
            ?? new SynchronizationContext();
    }

    public Progress(Action<T> action)
        : this()
    {
        ProgressReported += action;
    }

    public event Action<T> ProgressReported;

    void IProgress<T>.Report(T data)
    {
        var action = ProgressReported;
        if (action != null)
        {
            context.Post(arg => action((T)arg), data);
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2014-04-08 20:04:54

如果您受限于使用WinForms,我建议您使用智能客户软件工厂,或者更好地使用WPF和棱镜

两者都有共享组件的概念。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22946853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档