C#序列未在设计中时的序列事件
我在代码中添加了以下内容:C#序列未在设计中时的序列事件,c#,visual-studio,visual-studio-2015,serial-port,C#,Visual Studio,Visual Studio 2015,Serial Port,我在代码中添加了以下内容: namespace uartToCs_version_2._0 { public partial class formMain : Form { ==> public static SerialPort serial = new SerialPort(); 但是我没有使用“设计”选项卡,所以我应该如何处理事件(使用当前设置,我也可以在其他形式中使用它,这是否仍然可行)? 您可以在任何方法(如Load()或构造函数)中注册事件。我使用了下
namespace uartToCs_version_2._0
{
public partial class formMain : Form
{
==> public static SerialPort serial = new SerialPort();
但是我没有使用“设计”选项卡,所以我应该如何处理事件(使用当前设置,我也可以在其他形式中使用它,这是否仍然可行)?
您可以在任何方法(如Load()或构造函数)中注册事件。我使用了下面的构造函数。在设置所有必需的属性之前,无法注册事件。我没有显示设置代码
public partial class Form1 : Form
{
public static SerialPort serial = new SerialPort();
public Form1()
{
InitializeComponent();
serial.DataReceived += new SerialDataReceivedEventHandler(serial_DataReceived);
}
private void serial_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
}
}
可以在任何方法(如Load()或构造函数)中注册事件。我使用了下面的构造函数。在设置所有必需的属性之前,无法注册事件。我没有显示设置代码
public partial class Form1 : Form
{
public static SerialPort serial = new SerialPort();
public Form1()
{
InitializeComponent();
serial.DataReceived += new SerialDataReceivedEventHandler(serial_DataReceived);
}
private void serial_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
}
}
感谢您的快速回复感谢您的快速回复Regard serial是静态的,因此在FormColosed事件中,为GCRemove serial_DataReceived event for gcwhy is needed?如果serial是静态的,当设置为null或退出应用程序时,GC将收集它。当Form1实例关闭时,Form1实例可能未被GC收集,因为Form1.serial处于活动状态,而Form1.serial.DataReceived通过exec Form1.serial.DataReceived+=serial_DataReceived.Aspect serial是静态的,因此在FormColosed事件中,删除GCU的serial_DataReceived事件为什么需要这样做?如果serial是静态的,当它设置为null或应用程序退出时,GC将收集它。当Form1实例关闭时,Form1实例可能未被GC收集,因为Form1.serial处于活动状态,而Form1.serial.DataReceived通过exec Form1.serial.DataReceived+=serial\U DataReceived.Probable Duplication的可能重复引用Form1实例