在不同的类上捕获按钮单击事件

时间:2012-11-20 08:38:43

标签: c# winforms

我有一个winforms应用程序,应该能够与自定义设备通信。我有一个主窗口,其中有一个“断开连接”按钮。我有一个处理日志记录的用户控件,以及一个处理所有通信的类(SerialCom)。

当我加载用户控件时,我还在SerialCom类中设置了com端口。该类接收数据,并通过INotifyPropertyChanged将其发送给用户控件,有关详细信息,请参阅this question

我想从MainForm访问类SerialCom,而不必使用new SerialCom类。但是首先在用户控件上创建了SerialCom类。 (所以,如果我{(1}}来自MainForm的SerialCom类,串口将不会打开,所以我无法关闭它。)

有关如何从B类和C类访问A类而不必再次使用新A类的任何提示?我在考虑在表单之间传递事件,这是最好的选择吗?

2 个答案:

答案 0 :(得分:1)

将您的SerialCom课程变为单身。这样,您就拥有了许多类可以访问的实例。但请务必确保此线程安全!

请参阅this for making thread safe singletons

答案 1 :(得分:1)

也许你正在寻找一个单身人士。基本上,单个是一个只允许单个实例初始化的对象,并提供一种机制(通过静态方法/属性)从任何地方访问该实例。

以下是我在以下链接http://msdn.microsoft.com/en-us/library/ff650316.aspx

中找到的简单实现
using System;

public class Singleton
{
   private static Singleton instance;

   private Singleton() {}

   public static Singleton Instance
   {
      get 
      {
         if (instance == null)
         {
            instance = new Singleton();
         }
         return instance;
      }
   }
}